Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałMieczysława Kempka Został zmieniony 10 lat temu
1
Zend Framework Framework php Antonczak Lukasz
2
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
3
Instalacja Pobranie bibliotek ze strony http://framework.zend.com Zend Framework 1.5.1 2008-03-25 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
4
Przygotowania Modyfikacja pliku.htaccess RewriteEngine on RewriteRule !.(js|ico|gif|jpg|png|css)$ index.php Stworzenie drzewa katalogów
5
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
6
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.
7
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.
8
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.
9
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.
10
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
11
Zend Framework a MVC index.php Module
12
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());
13
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');
14
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');
15
Typowe routowanie http://naszadomena.pl/modul/controller/action/param1/param2/
16
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. http://nazwa_naszej.domeny.pl/11,22-Zend_framework.html kategoria nr_newsa tytul_newsa
17
Serwis newsów – Przyjazne linki
18
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
19
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) ) ); }
20
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') ) ); }
21
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 */
22
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'));
23
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'); }
24
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'); }
25
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'; }
26
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}
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.