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

Aplikacje WWW - laboratorium

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

Wprowadzenie do Doctrine ORM

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

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Backend Administratora

Instrukcja laboratoryjna

Bazy Danych i Usługi Sieciowe

Aplikacje WWW - laboratorium

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

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

Laboratorium 1 Wprowadzenie do PHP

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

Laboratorium 7 Blog: dodawanie i edycja wpisów

Aplikacje internetowe - laboratorium

URL, URI różnice i podobieństwa

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

I. Informacje ogólne. Jednym z takich systemów jest Mambo.

Laboratorium 6 Tworzenie bloga w Zend Framework

Aplikacje internetowe. Informacja o języku PHP. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne.

Instrukcja laboratoryjna cz.3

Program szkolenia: Symfony, nowoczesny framework PHP

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

Aplikacje WWW - laboratorium PHP + bazy danych

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

Zaawansowane aplikacje internetowe - laboratorium

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

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

Dokumentacja fillup - MS SQL

REFERAT O PRACY DYPLOMOWEJ

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

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

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

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

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

Z pojedynczym obiekcie zasady grupy znajdziemy dwa główne typy ustawień:

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

media Blitz wydajne sytemy szablonów

Programowanie internetowe

Archiwizacja baz MSSQL /BKP_SQL/ opis oprogramowania

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Załącznik 1 instrukcje instalacji

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

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

Dokonaj instalacji IIS opublikuj stronę internetową z pierwszych zajęć. Ukaże się kreator konfigurowania serwera i klikamy przycisk Dalej-->.

SSI Web 8. (badania.kozminski.edu.pl) Instrukcja logowania i uruchamiania ankiety

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

Specyfikacja implementacyjna aplikacji serwerowej

Aplikacje www laboratorium

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

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

MentorGraphics ModelSim

Instrukcja instalacji środowiska testowego na TestingCup wersja 1.0

BACKUP BAZ DANYCH FIREBIRD

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

Generatory pomocy multimedialnych

Instalacja NOD32 Remote Administrator

Podstawy technologii WWW

Tomasz Grześ. Systemy zarządzania treścią

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

1.Wstęp. 2.Generowanie systemu w EDK

I.Wojnicki, Tech.Inter.

Ruby i Ruby on Rails. Mateusz Drożdżyński

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

Zastępstwa Optivum. Jak przenieść dane na nowy komputer?

Podstawy JavaScript ćwiczenia

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

Programowanie w internecie nazwa przedmiotu SYLABUS A. Informacje ogólne

Pracownia internetowa w każdej szkole (edycja jesień 2005)

Załącznik 1 instrukcje instalacji

Problemy techniczne SQL Server

Walidacja danych w ASP.NET MVC

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


OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

1 Wprowadzenie do J2EE

Programowanie w Ruby

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

INSTRUKCJA INSTALACJI PŁATNOŚCI TRANSFERUJ.PL

Instrukcja tworzenia aplikacji bazodanowej opartej o technologię Oracle i platformę.net

Instalacja systemu zarządzania treścią (CMS): Joomla

Instrukcja instalacji oprogramowania dla środowiska Linux

MICROSOFT WINDOWS INSTALLER TWORZENIE INSTALATORÓW W ŚRODOWISKU VISUAL STUDIO.NET

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

Kurs języka Ruby. Ruby on Rails ActionPack

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

Podstawy technologii WWW

Transkrypt:

Wprowadzenie do framework a Symfony

dr Tomasz Jach WWW: E-mail: Adres: Instytut Informatyki ul. Będzińska 39 41-200 Sosnowiec Pokój 214 Telefon: 32 3689765 Zaliczenie zajęć: kolokwium + projekt + praca na zajęciach. Obecność na zajęciach obowiązkowa.

Warunki zaliczenia i tematyka zajęć Projekt na zajęciacj napisanie własnego projektu opartego na frameworku Symphony 2 kolokwia na zajęciach. Ocena końcowa: Round[(3*K1 + 3*K2 + 1*P) / 7]

Plan zajęć Symphony: Model MVC Instalacja Projektowanie serwisu Routing i przyjazne URL e Formularze Generator backendu Mechanizm logowania i zabezpieczeń Testowanie Polonizacja, wyszukiwanie i pluginy

Literatura Wszystkie pozycje dostępne online: http://symfony.com/doc/current/index.html Book, Cookbook, Reference, itp. Jobeet Tutorial with Symfony2: http://www.ens.ro/2012/03/21/jobeet-tutorial-withsymfony2/

Od czego zacząć edytor http://www.jetbrains.com/phpstorm/

Od czego zacząć serwer zewnętrzny Na pewnym etapie przyda się zewnętrzny hosting. Ofert jest w bród, także bezpłatnych. Na co zwracać uwagę przy wyborze? Cena Gdzie fizycznie jest serwerownia (pingi!) Czy support działa w nocy i w weekendy? Dostęp do zarządzania domeną (np. cpanel) Możliwości (np. cron, catch-all na pocztę, dostęp przez SSH, itp.)

Ćwiczenie 1 1. Zainstaluj XAMPPa: http://sourceforge.net/projects/xampp/ 2. Zainstaluj PHP Storm: http://www.jetbrains.com/phpstorm/ 3. Stwórz nowy projekt (pusty) 4. Skonfiguruj serwer lokalny 1. Ewentualnie doinstaluj Visual C++ Redistributable for Visual Studio 2012 x86 or x64. 2. Wystartuj z panelu kontrolnego Apache, MySQL 3. File -> Settings -> PHP 1. PHP Language Level: taki jak w XAMPP (zwykle 5.5) 4. Interpreter -> -> 1. Name: PHP w XAMPP 2. PHP Home: C:\xampp\php (ACHTUNG: jak zmieniłeś ścieżkę instalacyjną, to tu ją wpisz) 5. Files -> Settings -> Deployment -> + 1. Name: Lokalny 2. Type: Local or mounted folder 3. Folder: C:\xampp\htdocs 4. Zakładka Mappings: Jak na rysunku

Tak to ma wyglądać

Tak to ma wyglądać

Tak to ma wyglądać

Ćwiczenie 1 5. View -> Tool Windows ->Database -> + -> Data Source -> MySQL 1. User: root 2. Pass: <puste> 3. ACHTUNG: Nie zapomnij o kliknięciu na Download driver files Pełny tutorial: http://confluence.jetbrains.com/display/phpstorm/installing+and+configuring+xamp P+with+PhpStorm+IDE

Tak to ma wyglądać

Mój pierwszy projekt

Ćwiczenie 1 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>). Proszę korzystać i zapoznać się z edytorem. Przykładowo, bazę danych można stworzyć bezpośrednio z PHP Storm.

Cechy platformy 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

Kiedy stosowanie Symfony się opłaca? 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.

Object-Relational Mapping (ORM) 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.

Rapid Application Development (RAD) 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 Ain't Markup Language 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"

Którą wersję symfony wybrać? 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

Wzorzec MVC

<?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);?> MVC Przykład: płaskie PHP na

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

Dalszy podział warstwy widoku

<h1>list of Posts</h1> <table> <tr><th>date</th><th>title</th></tr> <?php foreach ($posts as $post):?> <tr> </tr> <td><?php echo $post['date']?></td> <td><?php echo $post['title']?></td> <?php endforeach;?> </table> <?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> mytemplate.php view.php layout.php widoku Dalszy podział warstwy

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

Model MVC w Symfony 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> <html> <head> <title><?php include_slot('title')?></title> </head> <body> <?php echo $sf_content?> </body> </html> List Action List Template Layout Symfony Ten sam przykład w

Instalacja frameworka Pobierz środowisko (będziemy używać wersji 2.3.5): http://symfony.com/download?v=symfony_standard_vendors_2.3.5.zip 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. http://www.ens.ro/2012/03/22/symfony2-jobeet-day-1-starting-up-theproject/

Konfiguracja PHP Storm Przegraj pliki Symphony do katalogu StudAd Stwórz nowy projekt w PHP Storm, jako katalog podaj StudAd z pełną ścieżką. PHP Storm wykryje, że tam jest Symphony. Zgódź się na automatyczne wykrycie frameworka i ustawienie opcji Przejdź przez konfigurację bazy danych i Apache raz jeszcze (dla każdego nowego projektu to trzeba robić)

Konfiguracja PHP Storm Popraw automatycznie wykryte mapowania File -> Settings -> Directories Pozwól na automatyczne mapowanie Dodaj katalogi app/cache i app/logs do Excluded Kliknij Apply

Konfiguracja PHP Storm

Konfiguracja PHP Storm Popraw automatycznie wykryte mapowania File -> Settings -> PHP -> Framework Integration Dodaj katalog src jako Project code directory Dzięki temu możliwy będzie tzw. widok frameworka (View -> Tool Windows -> Framework) który okaże się bardzo wygodny i przydatny

Konfiguracja PHP Storm

Konfiguracja PHP Storm Przejdź przez konfigurację bazy danych i Apache raz jeszcze (dla każdego nowego projektu to trzeba robić) Jako dokument root użyj folderu web w katalogu projektu

Konfiguracja PHP Storm Dodaj obsługę linii komend: Settings -> Project Settings -> Command Line Tool Support -> + Choose tool: Symphony Visibility: project Path to Symphony: <projekt>\app\console Path to PHP executable: powinno być ustawione, jak nie to katalog C:\xampp\php\php.exe Wszędzie, gdzie będziemy używać konsoli, możesz ją wywołać z PHP Storm za pomocą Ctrl+Shift+X. Alias dla komend symphony to s

Konfiguracja PHP Storm

Konfiguracja PHP Storm Dodaj konfigurację Web Servera: Run -> Edit configuration -> + -> PHP Web Application Server: lokalny XAMPP

Poprawnie zainstalowane Symfony

Tworzenie projektu Stwórz nowy projekt o nazwie Ens/StudAdBundle. Skorzystaj w tym celu z konsoli i scenariusza generatebundle Na następne zajęcia: gotowe instalacje Symphony, stworzone projekty. Sprawdź poprawność wygenerowanego projektu w katalogu StudAd/src powinny znajdować się podkatalogi Ens/StudAdBundle