Zend Framework Framework php Antonczak Lukasz. Dlaczego Zend Framework Zend Framework jest frameworkiem dla PHP5 rozwijanym przez społeczność użytkowników.

Slides:



Advertisements
Podobne prezentacje
MANDRIVA JAKO DOMOWY SERWER WWW
Advertisements

Analiza wywołania i przebiegu przerwań w systemie Linux
Java Server Faces Tomasz Nowak.
C++ w Objectivity Marcin Michalak s1744. Pomocne pakiety: Data Definition Language (DDL). Standard Template Library (STL). Active Schema.
Co nowego w Ganymede © 2008 by Jacek Pospychala; made available under the EPL v1.0.
Tadeusz Janasiewicz IT Group, Tadeusz Janasiewicz, WSUS, IT Group, r.
Framework 2 oraz Scala Bartosz Jankiewicz Credit Suisse _ _ _ __ | | __ _ _ _| | | '_ \| |/ _' | || |_| | __/|_|\____|\__.
Najpopularniejsze aplikacje ASP.NET i PHP.
© 2002 IBM Corporation Confidential | Date | Other Information, if necessary © 2008 by Jacek Pospychala; made available under the EPL v1.0 Nowe.
LINQ (Language-INtegrated Query) Marcin Bohdziewicz s4070.
Dr inż. Piotr Czapiewski. Overloading Znaczenie inne niż w większości języków obiektowych Metoda dynamicznego tworzenia pól i metod Magiczne metody.
Krzysztof Manuszewski
Obsługa Systemu Operacyjnego Windows
Zarządzanie magazynem danych - Storage Spaces w Windows Server 2012 oraz w Windows 8 Błażej Miśkiewicz MCTMCP MCSA MCTS MCITP.
Asynchroniczność w Windows 8 Jakub Binkowski. O mnie Jakub Binkowski Lead.NET Developer.
PROPOZYCJE ZAPISU Autorzy: Uczniowie należący do Samorządu Szkolnego.
Czyli jak zrobić prezentację komputerową?
Niebezpieczeństwa które czyhają na ciebie w sieci
Systemy klastrowe inaczej klasterowe.
Portal Systemu Jakości Kształcenia Jak się zalogować? Instrukcja dla pracowników UMCS Przygotowanie: Urszula Wojtczak, Zespół Obsługi Systemu Jakości Kształcenia.
Wybrane dane statystyczne dotyczące przestępczości w Polsce DOKUMENTACJA ORAZ SPOSÓB WYKONANIA BAZY DANYCH W PROGRAMIE ACCESS.
Efekt cieplarniany jako skutek nadmiernej emisji CO 2 Wrzesień – Październik 2009 TWORZENIE SZKÓŁ DLA ZRÓWNOWAŻONEGO ROZWOJU.
To jest bardzo proste  Lekcja nr 3
Prezentacja z przedmiotu „systemy wizyjne”
KODEKS 2.0 OPRACOWANY PRZEZ UCZNIÓW KLASY 2 B Powstały podczas debaty klasowej.
Szkoła w chmurze.
Program wspomagający sekretariat Korespondencja. Wprowadzenie Instytucja dla którego ma być aplikacja pracuje w sieci Ethernet. Serwery pracują na systemie.
Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Podyplomowe Studium Programowania i Zastosowań Komputerów DorFin Baza.
Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Podyplomowe Studium Programowania i Zastosowań Komputerów Autor: Marcin.
Instalacja i konfiguracja serwera OpenVPN
Powiatowy Urząd Pracy Grodzisk Mazowiecki,
Nieformalne miejsca spotkań. ANKIETY Przeprowadziliśmy wśród uczniów gimnazjum ankietę na temat nieformalnych miejsc spotkań. Przedstawimy przykładowe.
nginn Workflow engine Rafał Gwizdała
Przejście do usługi Office 365 Microsoft Online Services Przejście z pakietu BPOS do Office 365 dla klientów Microsoft Online Services.
Podstawy licencjonowania Exchange, SharePoint oraz Lync.
Technologie tworzenia aplikacji internetowych
Cz.8 Zdarzenia. Refleksja – przypomnienie Event Programowanie zdarzeniowe Do dzieła!
Marek Krupa Coś o mnie.
Komunikacja z platformą T2S
Portale informacyjno-edukacyjne w samorządach terytorialnych. Ocena projektów dot. OZE w programie Retscreen Anna Bogusz Warszawa, 8 luty 2011 r.
System gospodarki rynkowej
Instalacja serwera WWW na komputerze lokalnym
HTML Podstawy języka hipertekstowego Damian Urbańczyk.
FORMY UCZESTNICTWA OBYWATELI W ŻYCIU PUBLICZNYM
Prawo lokalne w Internecie Jakub Kasprzycki
ZARZĄDZANIE PROCESAMI KOMUNIKACYJNYMI PRZEZ EVENT MARKETING
KINECT – czyli z czym to się je?. Damian Zawada
Sieci komputerowe. Nowe technologie komputerowe
Lokalne konta użytkowników i grup
Wielowymiarowa analiza poziomu ubóstwa w województwie podlaskim WSTĘPNE WYNIKI BADAŃ
Pliki elementowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików elementowych. Pliki takie zawierają informację zakodowaną
To popularny portal internetowe. Pisząc blog informujemy internautów o swoich zainteresowaniach np. o modzie lub gotowaniu. Niestety czasem zapominamy.
PolGIS jako nowoczesny system do paszportyzacji sieci
Weronika Schneider. Na fotografiach widać obecne budynki Polpharmy.
Narzędzie wspomagające projektowanie aplikacji Proficy iFIX
Grupy użytkowników1 Administracja Sieciami komputerowymi Grupy użytkowników.
Temat 5: Elementy meta.
Temat 1: Umieszczanie skryptów w dokumencie
Temat 6: Elementy podstawowe
1. Celem naszych działań w roku szkolnym 2011 / 2012 będzie zwiększenie wyniku średniego naszej szkoły. 2. Zmniejszymy liczbę uczniów osiągających wynik.
Dzień bezpiecznego Internetu
WoF PLATFORMA KOMUNIKACJI. WoF jest platformą komunikacji systemem wspomagającym obieg informacji oraz zarządzanie w firmie Zapewnia elektroniczny obieg.
Warsztaty użytkowników programu PLANS – Karwia06 Język makropoleceń JMP programu PLANS Część I mgr inż. Tomasz Zdun.
Rozdział 3: Bezpieczeństwo w sieci opartej na systemie Windows 2000.
Rozdział 6: Analiza protokołu TCP/IP
Komtech Sp. z o.o. Magic Janusz ROŻEJ.
Systemy zarządzania treścią Wykład 5
Erlang Web Scalable & Reliable web framework ErlLounge, Kraków Lipiec 2009 (wersja rozszerzona dla czytelników off-line;))
1.
Zapis prezentacji:

Zend Framework Framework php Antonczak Lukasz

Dlaczego Zend Framework Zend Framework jest frameworkiem dla PHP5 rozwijanym przez społeczność użytkowników pod okiem firmy Zend. Dzięki temu, że jest on rozwijany pod kontrolą ludzi odpowiedzialnych także za sam język PHP, ma on największą gwarancję dalszego rozwoju oraz wsparcia. Bardzo dobra dokumentacja (niestety brak języka Polskiego) Rosnąca popularność i zapotrzebowanie na programistów ZF

Instalacja Pobranie bibliotek ze strony Zend Framework Przygotowanie serwera: Moduł Apache Mod Re-write, które domyślnie nie jest włączony w konfiguracji. httpd.conf #LoadModule rewrite_module_modules/mod_rewrite.so php.ini Driver PDO – (PHP Data Objects) ;extension=php_pdo.dll ;extension=php_pdo_mysql.dll

Przygotowania Modyfikacja pliku.htaccess RewriteEngine on RewriteRule !.(js|ico|gif|jpg|png|css)$ index.php Stworzenie drzewa katalogów

Przegląd modułów Zend_Acl Zend_Auth Zend_Cache Zend_Config Zend_Console_Getopt Zend_Controller Zend_Currency Zend_Date Zend_Db Zend_Debug Zend_Exception Zend_Feed Zend_Filter Zend_Filter_Input Zend_Form Zend_Gdata Zend_Http Zend_Infocard Zend_Json Zend_Layout Zend_Ldap Zend_Loader Zend_Locale Zend_Log Zend_Mail Zend_Measure Zend_Memory Zend_Mime Zend_OpenId Zend_Pdf Zend_Registry Zend_Rest Zend_Search_Lucene Zend_Server_Reflection Zend_Service_Akismet Zend_Service_Amazon Zend_Service_Audioscrobbler Zend_Service_Delicious Zend_Service_Flickr Zend_Service_Nirvanix Zend_Service_Simpy Zend_Service_SlideShare Zend_Service_StrikeIron Zend_Service_Technorati Zend_Service_Yahoo Zend_Session Zend_Translate Zend_Uri Zend_Validate Zend_Version Zend_View Zend_XmlRpc

Przegląd modułów Zend_Auth API do obsługi uwierzytelniania, zawierające zarazem adaptery dla najczęściej używanych scenariuszy. Zend_Debug Narzędzia do testowania, diagnostyki Zend_Cache Pozwala na umieszczanie dowolnych danych w pamięci cache. Zend_Controller Komponent logiki sterowania – Kontroler. Zend_Config Obsługa plików konfiguracji – ich zapisu i odczytu.

Przegląd modułów Zend_Date Zarządzanie czasem systemowym. Zend_Db Adaptery do obsługi różnych baz danych – wśród nich są MySQL, SQL Server, Postgre, Oracle i SQLite. Zend_Exception Wyjątki, domyślnie implementowana klasa. Zend_Filter Obsługa filtrowania danych. Zend_Gdata Interfejs API dla niektórych usług internetowych Google'a.

Przegląd modułów Zend_Http Obsługa żądań HTTP. Zend_Json Dostarcza metody serializacji natywnego PHP do JSON (Notacji Obiektów JavaScriptu) i JSON do PHP. Zend_Locale Obsługa aplikacji wielojęzycznych. Zend_Mail Metody obsługi wysyłania i odbierania poczty za pomocą SMTP.

Przegląd modułów Zend_Search_Lucene Phpowa interpretacja rozbudowanego Javowego narzędzia Zend_Session Wszystko co jest związane z sesjami w PHP Zend_Pdf Narzędzia obsługi dokumentów PDF z poziomu PHP. Zend_Registry Zmienne widocznie globalnie Zend_View Komponent interfejsu użytkownika – Wygląd.

Przegląd modułów Zend_Validate Rozbudowane narzędzia do walidacji adresu mailowego, długości tekstu. Zend_Form Narzędzia do tworzenia formularzy łącznie z walidacją danych Zend_Loader Narzędzie do dołączania klas, plików

Zend Framework a MVC index.php Module

Czas coś poprogramować – index.php Główny kontroler Zend Frameworka, element Zend_Controller, wymaga, by wszystkie żądania HTTP (wywołania stron) przechodziły przez jeden plik, index.php, zwany bootstrapperem <?php date_default_timezone_set('Europe/Warsaw'); define('APP_PATH', dirname(__FILE__)); set_include_path('.'. PATH_SEPARATOR. './library/'. PATH_SEPARATOR. './application/'. PATH_SEPARATOR. './application/default/models/'. PATH_SEPARATOR. './application/default/controllers/'. get_include_path());

Serwis newsów – index.php include "Zend/Loader.php"; /* * Load constant definitions. */ Zend_Loader::loadFile('constant.php'); Zend_Loader::loadClass('Zend_Controller_Front'); Zend_Loader::loadClass('Zend_Controller_Router_Route_Regex'); Zend_Loader::loadClass('Zend_View'); Zend_Loader::loadClass('Zend_Config_Ini'); Zend_Loader::loadClass('Zend_Registry'); Zend_Loader::loadClass('Zend_Db'); Zend_Loader::loadClass('Zend_Db_Table'); Zend_Loader::loadClass('Zend_Db_Adapter_Pdo_Mysql'); Zend_Loader::loadClass('Zend_Filter'); Zend_Loader::loadClass('Bkdiy_View_Smarty'); Zend_Loader::loadClass('Zend_Validate'); Zend_Loader::loadClass('Zend_Debug'); Zend_Loader::loadClass(Jamnik_Link');

Serwis newsów – index.php // load configuration $config = new Zend_Config_Ini('./application/config.ini', 'general'); Zend_Registry::set('config', $config); // setup database $db = Zend_Db::factory($config->db->adapter, $config->db->config->toArray()); Zend_Db_Table::setDefaultAdapter($db); Zend_Registry::set('db', $db); //ladowanie smartow $view = new Bkdiy_View_Smarty(); // setup controller $baseUrl = substr($_SERVER['PHP_SELF'], 0, strpos($_SERVER['PHP_SELF'], '/index.php')); $frontController = Zend_Controller_Front::getInstance(); $frontController->setParam('view', $view); $frontController->setParam('noViewRenderer', true); $frontController->addControllerDirectory('./application/default/controllers', 'default');

Typowe routowanie

Serwis newsów – index.php //konfiguracja rutera $router=$frontController->getRouter(); $router->addRoute('news', new Zend_Controller_Router_Route_Regex( '([0-9]+),([0-9]+)-(.+)\.html', array( 'module' => 'default', 'controller' => 'index', 'action' => 'news'), array( 1 => 'news_category_id', 2 => 'news_id, 3 => tytul), '%d,%d-%s.html')); $frontController->throwExceptions(true); $frontController->dispatch(); Przyjazne linki. kategoria nr_newsa tytul_newsa

Serwis newsów – Przyjazne linki

Serwis newsów – config.ini [general] db.config.host = localhost db.config.username = test db.config.password = aaa db.config.dbname = test db.adapter = PDO_mysql Adres hosta Nazwa użytkownika w mającego dostęp do bazy danych Hasło Nazwa bazy danych Adapter dostępu do bazy danych

Serwis newsów – News.php /** * Klasa do obslugi newsów */ class News extends Zend_Db_Table_Abstract { protected $_name = 'news'; protected $_primary = 'news_id'; /** * połączenie z tabelą kategorii newsów */ protected $_referenceMap = array( 'NewsCategory' => array( 'columns' => array('news_category_id'), 'refTableClass' => 'NewsCategory', 'refColumns' => array('news_category_id) ) ); }

Serwis newsów – NewsCategory.php class NewsCategory extends Zend_Db_Table_Abstract { protected $_name = 'news_category'; protected $_primary = 'news_category_id'; protected $_referenceMap = array( 'News' => array( 'columns' => array('news_category_id'), 'refTableClass' => 'News', 'refColumns' => array('news_category_id') ) ); }

Serwis newsów – IndexController.php /** * Class IndexController. * */ class IndexController extends Zend_Controller_Action { function init() { Zend_Loader::loadClass('NewsCategory'); Zend_Loader::loadClass('News'); } /* function init() -ladowanie wymaganych klas */

Serwis newsów – IndexController.php /** * glowna akcja – cel: pobranie z bazy wszystkich newsow */ public function indexAction() { $view = $this->getInvokeArg('view'); $view->setScriptPath('default'); $index = 'DefaultIndex.tpl'; $newsTable = new News(); $newsCategory = new NewsCategory(); //pobieranie bez laczenia tabel $select2 = $newsCategory->fetchAll() ->toArray(); //pobieranie z laczeniem tabel $select = $newsTable->getAdapter()->select() ->from(array('n' => 'news')) ->joinLeft(array('cn' => 'news_category'), 'n.news_category_id = cn.news_category_id') ->order(array('dateadd'));

Serwis newsów – IndexController.php //$sql = $select->__toString(); //Zend_debug::dump($sql); $news = $newsTable->getAdapter()->fetchAll($select); // zend_debug::dump($news); //tworzenie linków dla newsów for ($i=0;$i<sizeof($news);$i++) { $link = new Jamnik_Link; $link->setAllInformation($news[$i]); $news[$i]['link']=$link->getLink(); unset($link); } $title='Strona główna'; $view->assign('title',$title); $view->assign('newsCategory',$select2); $view->assign('assign',$index); $view->assign('news',$news); $view->display('Default.tpl'); }

Serwis newsów – IndexController.php public function newsAction() { $view = $this->getInvokeArg('view'); $view->setScriptPath('default'); $main = 'Description.tpl'; //pobieranie parametrow z adresu //zend_debug::dump($this->getRequest()->getParams()); $newsId = (int)$this->getRequest()->getParam('news_id'); $categoryId = (int)$this->getRequest()->getParam('news_category_id'); ///przekierowanie adresu w przypadku braku wymaganych parametrów if (!isset($news) and !isset($categoryId)) $this->_redirect(BASE_URL); $newsTable= new News(); $newsRows = $newsTable->find($newsId) ->toArray(); $view->assign('title','News'); $view->assign('assign',$main); $view->assign('news',$newsRows); $view->display('Default.tpl'); }

Serwis newsów – Jamnik_Link class Jamnik_Link { private $name; private $id; private $category_id; public function setAllInformation($table) { $this->name = $table['title']; $this->id = $table['news_id']; $this->category_id = $table['news_category_id']; } public function getLink() { $replace =array(' ',ó',ę',ś',ź',ż',ł',ń',ć,ą',,'.',' ','?'); $repalce_to = array('_','o','e','s','z','z','l','n','c','a','_','_','_'); return str_replace($replace,$repalce_to, $this->category_id.",".$this->id.'-'.$this->name).'.html'; }

Serwis newsów – View {$title} {if $assign} {include file="$assign"}{/if} {section name=mysec loop=$news} dodano: {$news[mysec].dateadd} Tytuł: {$news[mysec].title} Kategoria {$news[mysec].categoryname} br /> {$news[mysec].introduction} (...) + więcej {/section} {section name=mysec loop=$news} dodano: {$news[mysec].dateadd} Tytuł: {$news[mysec].title} Wstęp: {$news[mysec].introduction} Treść: {$news[mysec].description} {/section}