Wprowadzenie do framework a Symfony



Podobne dokumenty
Wprowadzenie do framework a Symfony

Wprowadzenie do framework a Symfony

Krótki i szybki przegląd frameworków

PHP zaawansowane programowanie

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

Aplikacje WWW - laboratorium

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

Baza danych i ORM mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Aplikacje WWW - laboratorium

Wprowadzenie do Doctrine ORM

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

MVC w praktyce tworzymy system artykułów. cz. 2

Bazy Danych i Usługi Sieciowe

Laboratorium 6 Tworzenie bloga w Zend Framework

media Blitz wydajne sytemy szablonów

Backend Administratora

MVC w praktyce tworzymy system artykułów. cz. 1

URL, URI różnice i podobieństwa

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Aplikacje WWW - laboratorium

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Laboratorium 7 Blog: dodawanie i edycja wpisów

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Aplikacje internetowe - laboratorium

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

Instrukcja laboratoryjna

Aplikacje WWW - laboratorium PHP + bazy danych

Specyfikacja implementacyjna aplikacji serwerowej

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Programowanie obiektowe

Kompozycja Proceduralna

Programowanie zorientowane obiektowo. Mateusz Kołecki

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Web frameworks do budowy aplikacji zgodnych z J2EE. Jacek Panachida

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework


METODY PROGRAMOWANIA

REFERAT O PRACY DYPLOMOWEJ

Internetowe bazy danych

Laboratorium 1 Wprowadzenie do PHP

Program szkolenia: Symfony, nowoczesny framework PHP

REFERAT PRACY DYPLMOWEJ. Temat pracy: Projekt i realizacja warstwy serwerowej gry internetowej

Database Connectivity

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Ruby

I.Wojnicki, Tech.Inter.

Podstawy wzorca MVC MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

Czym jest Ruby on Rails?

Tworzenie modułów. Wymagania aplikacji. Tworzenie modułów. Architektura aplikacji. controllers

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Bazy Danych i Usługi Sieciowe

Ruby on Rails. Supersilnik WWW. Łukasz Włodarczyk

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

INSTYTUT INśYNIERII I GOSPODARKI WODNEJ POLITECHNIKA KRAKOWSKA im. TADEUSZA KOŚCIUSZKI KRAKÓW 2008

SIECI KOMPUTEROWE I BAZY DANYCH

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Podstawy technologii WWW

Programowanie w Ruby

REFERAT PRACY DYPLOMOWEJ

Facelets ViewHandler

Języki skryptowe - PHP. Podstawy PHP. Paweł Kasprowski. pawel@kasprowski.pl. vl07

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

PRZEWODNIK PO PRZEDMIOCIE

Podstawy technologii WWW

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

Programowanie obiektowe

HP Service Anywhere Uproszczenie zarządzania usługami IT

Bazy Danych i Usługi Sieciowe

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Aplikacje internetowe

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Podstawy JavaScript ćwiczenia

Projektowanie aplikacji z bazami danych

Bazy danych. dr Radosław Matusik. radmat

Dlaczego PHP? - zalety

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

INSTALACJA I KONFIGURACJA SERWERA PHP.

Forum Client - Spring in Swing

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: Tablice w PHP 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

Studium Podyplomowe Aplikacje i Us ugi Internetowe Tworzenie witryn internetowych 2012/2013. CakePHP część II

Odseparowanie kodu PHP i warstwy prezentacji od dawna było celem

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Internetowe bazy danych

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Specyfikacja implementacyjna aplikacji mobilnej

Architektura MVC w ASP.NET. Autor wykładu: Marek Wojciechowski

Dodatkowo, w przypadku modułu dotyczącego integracji z systemami partnerów, Wykonawca będzie przeprowadzał testy integracyjne.

Transkrypt:

Wprowadzenie do framework a Symfony mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Bazuje na wzorcu projektowym MVC Niezależność od systemu bazodanowego Programowanie zorientowane obiektowo Łatwość w instalacji oraz konfiguracji na większości platform Zgodność z najlepszymi standardami oraz wzorcami budowy aplikacji internetowych Walidacja formularzy i treści Wbudowany mechanizm zarządzanie sesjami Łatwość rozbudowy oraz możliwość integracji z innymi bibliotekami Wykorzystanie technologii scaffoldingu. Wbudowana internacjonalizacja (i18n) Wbudowana ochrona przed atakami CSRF oraz XSS

Jeśli tworzymy prostą aplikację/stronę internetową składającą się z kilku(nastu) podstron, korzystającą w niewielkim stopniu z bazy danych, bez konieczności tworzenia szczegółowej dokumentacji lepiej jest wykorzystać zwykłe PHP. Jeśli tworzona aplikacja jest bardziej złożona, posiada rozbudowaną warstwę reguł biznesowych i będzie potencjalnie w przyszłości wzbogacana o nowe możliwości zaleca się skorzystać z platformy Symfony.

ORM interfejs, którego zadaniem jest tłumaczenie logiki obiektowej na logikę relacyjną (by posługiwać się relacyjnymi bazami danych w sposób obiektowy). ORM składa się z obiektów definiujących metody dostępu do danych oraz pozwalających zapisać reguły biznesowe (np. automatyczne doliczanie rabatu). Warstwa pośrednicząca = oderwanie od konkretnego silnika bazodanowego Możliwość definiowania nowych akcesorów: public function getdane() { return $this->getimie().' '.$this->getnazwisko(); } Symfony wspiera domyślnie dwa ORMy: Propel oraz Doctrine.

Rozpocznij tworzenie tak szybko jak to możliwe Proces iteracyjny Aplikuje filozofie KISS (Keep It Simple, Stupid) Częsty refactoring Wykorzystanie testów modułów Zasada DRY (Don t Repeat Yourself)

YAML uniwersalny język formalny przeznaczony do reprezentowania różnych danych w ustrukturalizowany sposób. Przykład: PHP $house = array( family' => array( 'name' => 'Doe', 'parents' => array('john', 'Jane'), 'children' => array('paul', 'Mark', 'Simone') ), 'address' => array( 'number' => 34, 'street' => 'Main Street', 'city' => 'Nowheretown', 'zipcode' => '12345' ) ); YAML house: family: name: Doe parents: - John - Jane children: - Paul - Mark - Simone address: number: 34 street: Main Street city: Nowheretown zipcode: "12345"

Symfony 1.3 / 1.4 Posiadają taką samą funkcjonalność. Wersja 1.4 nie jest kompatybilna z projektami utworzonymi w Symfony 1.2 i niższej. Wsparcie dla Symfony 1.3 zakończyło się w listopadzie 2010. Wsparcie dla Symfony 1.4 przewidywane jest do Listopada 2012. Symfony 2.0 Inna struktura katalogów (inne znaczenie katalogu app/ i src/) Zmiana w sposobie automatycznego ładowania klas (nazwa klasy musi być odwzorowana w jej ścieżce) Zmiana w korzystaniu z konsoli (zamiast php symfony jest php app/console) Zmiana roli aplikacji (w jedynce jeden projekt posiadał wiele aplikacji, w dwójce projekt ma jedną aplikacje) Pluginy zostały zastąpione przez tzw. Bundle. Zmiany w zastosowaniu routingu i konfiguracji pluginów.

Proszę napisać skrypt w języku PHP, którego celem jest wyświetlenie informacji z bazy danych. Proszę stworzyć jedną tabelę, zawierającą sztucznie stworzone informacje na wybrany przez Państwa temat i wyświetlić je na stronie w formie tabelarycznej.

<?php // Łączenie i wysyłanie zapytania $link = mysql_connect('localhost', 'myuser', 'mypassword'); mysql_select_db('blog_db', $link); $result = mysql_query('select date, title FROM post', $link);?> <html> <head> <title>list of Posts</title> </head> <body> <h1>list of Posts</h1> <table> <tr><th>date</th><th>title</th></tr> <?php // Wyświetlanie rezultatów while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "\t<tr>\n"; printf("\t\t<td> %s </td>\n", $row['date']); printf("\t\t<td> %s </td>\n", $row['title']); echo "\t</tr>\n"; }?> </table> </body> </html> <?php mysql_close($link);?>

<?php // Łączenie i wysyłanie zapytania $link = mysql_connect('localhost', 'myuser', 'mypassword'); mysql_select_db('blog_db', $link); $result = mysql_query('select date, title FROM post', $link); // Wypełnianie tablicy z danymi $posts = array(); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) $posts[] = $row; mysql_close($link); // Dołączenie widoku require('view.php');?> <html> <head> <title>list of Posts</title> </head> <body> <h1>list of Posts</h1> <table> <tr><th>date</th><th>title</th></tr> <?php foreach ($posts as $post):?> <tr> <td><?php echo $post['date']?></td> <td><?php echo $post['title']?></td> </tr> <?php endforeach;?> </table> </body> </html> Kontroler index.php Widok view.php

<?php function getallposts() { }?> //Łączenie, wysyłanie zapytania, wypełnianie tablicy posts $link = mysql_connect('localhost', 'myuser', 'mypassword'); mysql_select_db('blog_db', $link); $result = mysql_query('select date, title FROM post', $link); $posts = array(); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) $posts[] = $row; mysql_close($link); return $posts; Model model.php <?php // Dołączenie modelu require_once('model.php'); // Pobranie listy postów $posts = getallposts(); // Dołączenie widoku require('view.php');?> Kontroler index.php

function getallposts() { $link = open_connection('localhost', 'myuser', 'mypassword'); $result = query_database('select date, title FROM post', 'blog_db', $link); $posts = array(); while ($row = fetch_results($result)) { $posts[] = $row; } close_connection($link); return $posts; } function open_connection($host, $user, $password) return mysql_connect($host, $user, $password); Model model.php function close_connection($link) mysql_close($link); function query_database($query, $database, $link) { mysql_select_db($database, $link); return mysql_query($query, $link); } Warstwa pośrednia do mysql function fetch_results($result) return mysql_fetch_array($result, MYSQL_ASSOC);

<h1>list of Posts</h1> <table> <tr><th>date</th><th>title</th></tr> <?php foreach ($posts as $post):?> <tr> <td><?php echo $post['date']?></td> <td><?php echo $post['title']?></td> </tr> <?php endforeach;?> </table> mytemplate.php <?php $title = 'List of Posts'; $posts = getallposts(); include(layout.php);?> <html> <head> <title><?php echo $title?></title> </head> <body> <?php include('mytemplate.php');?> </body> </html> view.php layout.php

Podział kontrolera Front controller Akcje (actions) Elementy wymagane do stworzenia strony w Symfony: Model layer Database abstraction Data access View layer View Template Layout Controller layer Front controller Action

<?php class weblogactions extends sfactions { public function executelist() { $this->posts = PostPeer::doSelect(new Criteria()); } } <?php slot('title', 'List of Posts')?> <h1>list of Posts</h1> <table> <tr><th>date</th><th>title</th></tr> <?php foreach ($posts as $post):?> <tr> <td><?php echo $post->getdate()?></td> <td><?php echo $post->gettitle()?></td> </tr> <?php endforeach;?> </table> List Action List Template <html> <head> <title><?php include_slot('title')?></title> </head> <body> <?php echo $sf_content?> </body> </html> Layout

Musisz mieć zainstalowany lokalnie Apache + PHP + MySQL. Polecam XAMPP wersja portable. http://www.symfony-project.org/gettingstarted/1_4/pl/03-symfony-installation Zainstaluj środowisko, stwórz nowy projekt. Na następne zajęcia: gotowe instalacje Symphony, stworzone projekty, wykonana szata graficzna. Projekt powinien mieć nazwę StudAd. Proszę nie pobierać wersji z subversion.