Wprowadzenie do framework a Symfony

Podobne dokumenty
Wprowadzenie do framework a Symfony

Krótki i szybki przegląd frameworków

Wprowadzenie do framework a Symfony

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

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

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

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

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

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

Bazy Danych i Usługi Sieciowe

Laboratorium 6 Tworzenie bloga w Zend Framework

Aplikacje WWW - laboratorium

Laboratorium 7 Blog: dodawanie i edycja wpisów

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

media Blitz wydajne sytemy szablonów

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

URL, URI różnice i podobieństwa

Aplikacje internetowe - laboratorium

Aplikacje WWW - laboratorium PHP + bazy danych

Backend Administratora

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

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

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

Laboratorium 1 Wprowadzenie do PHP

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

Specyfikacja implementacyjna aplikacji serwerowej

Kompozycja Proceduralna

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

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

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

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

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

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Programowanie zorientowane obiektowo. Mateusz Kołecki

Podstawy technologii WWW

Program szkolenia: Symfony, nowoczesny framework PHP

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

Programowanie obiektowe

Podstawy technologii WWW

Instrukcja laboratoryjna

I.Wojnicki, Tech.Inter.

REFERAT O PRACY DYPLOMOWEJ

Bazy Danych i Usługi Sieciowe

Internetowe bazy danych

Web frameworks do budowy aplikacji zgodnych z J2EE. Jacek Panachida

Programowanie w Ruby

Web frameworks do budowy aplikacji zgodnych z J2EE

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

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

Facelets ViewHandler

Programowanie w Ruby


METODY PROGRAMOWANIA

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

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

Czym jest Ruby on Rails?

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

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

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

Database Connectivity

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

Tworzenie raportów XML Publisher przy użyciu Data Templates

Wstęp. Ale po co? Implementacja

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

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

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

Aplikacje internetowe

Podstawy JavaScript ćwiczenia

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

SSK - Techniki Internetowe

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

SIECI KOMPUTEROWE I BAZY DANYCH

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Zaawansowany kurs języka Python

INSTALACJA I KONFIGURACJA SERWERA PHP.

Dynamiczne generowanie pliku PDF

Zajęcia 11 wykorzystanie MySQL w PHP

Dlaczego PHP? - zalety

Programowanie obiektowe

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

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

Programowanie i projektowanie obiektowe

Programowanie w Ruby

Zwinne i lekkie aplikacje webowe z. Jacek Laskowski

Bazy Danych i Usługi Sieciowe

Internetowe bazy danych

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

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

Mechanizm routingu mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Transkrypt:

Wprowadzenie do framework a Symfony

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. Wprowadzone dystrybucje: standard, HelloWorld

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 (znaczniki <table><tr><td>).

<?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

Proszę przepisać stworzony w poprzednim ćwiczeniu skrypt, tak aby był zgodny z modelem MVC.

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. Np. XAMPP wersja portable. http://www.ens.ro/2012/03/22/symfony2-jobeet-day-1- starting-up-the-project/ Zainstaluj środowisko. Katalog z frameworkiem powinien mieć nazwę StudAd (na stronie jest jobeet). Projekt powinien być dostępny pod adresem: http://localhost:8080 Proszę włączyć odpowiednie moduły apache (np. rewrite_module) Proszę nie pobierać wersji z subversion.

Stwórz nowy projekt o nazwie Ens/StudAdBundle. Polecam do katalogu z symfony (StudAd) dodać symfony.bat (modyfikując ścieżkę do php). Wówczas wystarczy: symfony list Zamiast php app/console list Na następne zajęcia: gotowe instalacje Symphony, stworzone projekty. Sprawdź poprawność wygenerowanego projektu w katalogu StudAd/src powinny znajdować się podkatalogi Ens/StudAdBundle