Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемart23
1 Граков Алексей Antalika.com
2 Этот доклад был прочитан на конференции Байнет 2.2 Beta. Минск, сентября официальный сайт:
3 Обычная разработка Cms 1 Cms 2 Super CMS Лучшая в мире CMS, потому, что я написал ее сам! Зачем что-то еще?
5 Потребность в фреймворках Разработка нестандартных проектов. Желание иметь под рукой хороший инструмент, который будет: - развиваться - иметь хорошую документацию - иметь качественный код - обеспечивать достаточную гибкость - содержать компоненты на все случаи жизни - бесплатным
6 Преимущества фреймворков Один зверь, вместо зоопарка Ускорение сроков разработки Меньше внимания на мелочи, больше на бизнес логику Больший контроль над процессом и качеством разработки Хорошая документированность Быстрый ввод новичков на проект
7 Php-фреймворки: codeIgniter cakePHP Symfony Zend Framework
8 Цитируемость фреймворков в поисковиках ПоисковикCakePhpSymfonyCodeIgniter Zend Framework Google (world) 3,680,0001,440,000544,0003,280,000 Google EN3,250,000497,000361,0002,040,000 Google.ru ,50036,900 Yandex90, 00068, 00087, , 000
9 Cake PHP
10 CakePHP::Возможности Совместим с PHP4 и PHP5 MVC Своя файловая структура Своя абстракция данных (либо Adodb, PEAR::Db) Поддержка плагинов Валидация Scaffolding Маршрутизация запросов Компоненты / Хелперы / i18n
11 CakePHP::Обработка запросов
12 CakePHP::Соглашения Класс KissesAndHugsController должен храниться в файле kisses_and_hugs_controller.php Название модели записывается в ед. числе: Book, MyBook, и т.п. Названия таблиц должны быть в множественном числе, и через подчеркивание: my_year_books Названия множественном числе. BooksController, OxenController.
13 CakePHP::Контроллеры index – метод по умолчанию ( site.com/books/ ) Методы контроллера beforeFilter – до логики beforeRender – до view afterFilter – после логики и после view
14 CakePHP::Модели Доступные методы в каждой модели: beforeFind() afterFind() beforeValidate() beforeSave() afterSave() beforeDelete() afterDelete()
15 CakePHP::Шаблоны Чистый PHP Smarty Место нахождения шаблона: /app/views/people/index.tpl
16 CakePHP::Проекты Fileshifter.com Server: Pentium 3, 733mhz, 512MB RAM, 2TB SATA RAID. OS: Fedora Linux, ext3 filesystem. Объем данных на сервере: 1.37 TB. Ежедневный траффик: 28 GB в среднем. Время отклика: сек
17 Code Igniter
18 CodeIgniter Текущая версия Гибкость Плагины / Хелперы Скаффолдинг Простота (loose coupling) MVC Поддержка PHP4 Настройка параметров автозагрузки
19 CI::Ход работы приложения
20 CodeIgniter::модели Классы моделей хранятся в папке application/models/ Класс: Model_name Имя файла: application/models/user_model.php Загрузка: $this->load->model('Model_name'); $this->Model_name->function();
21 CodeIgniter::Контроллеры application/config/routes.php – маршруты $route['default_controller'] = XXX_controller'; class My_class extends Controller { …. } _remap ()
22 CodeIgniter::View class Privet extends Controller { …. } Загрузка: $this->load->view('name');
23 Symfony
24 Symfony::использует Creole – абстракция с БД Propel ( PDO с 1.2) Prado для i18n Spyc YAML парсинг Pake для командной строки(symfony 1.0) Prototype, Script.aculo.us, Dynarch.com, TinyMCE
25 Symfony::возможности I18n, l10n, cache, валидация и т.п. Scaffolding Генерация кода AdminGenerator Независимые блоки (Loose coupling) Маршрутизация Хелперы Debug
26 Symfony::особенности Все классы начинаются с sf (стандартные) class ##MODULE_NAME##Actions extends sfActions Много различного рода конфигурационных файлов.
28 Symfony::Известные проекты bookmarks.yahoo.com (20 млн пользователей) (сайт обмена играми) (сайт знакомств) (доска объявлений)
30 Zend Framework (ZF) Acl (роли и ресурсы) Auth (openId, Microsoft InfoCard) Cache / Loader Config / Console_Getopt (cli) Date ( i18n, l10N) / Db Filter, Validate (34) / Gdata (Zend Google Data Client) Http_Client / Json / Locale, Log, Mail, Mime, Registry Rest_Client / Rest_Server Service: Akismet, Amazon, Delicious, Flickr, Nirvanix, Simpy, StrikeIron и Yahoo! / XmlRpc
31 Новое в ZF 1.6 RC1 Интеграция с Dojo Поддержка с SOAP Unit-тесты для контроллеров Поддержка индексных файлов Lucene 2.3 Zend_Session – обработчик сохранения Paginator Zend_Config_Xml – поддержка атрибутов Медиа хелперы (QuickTime, Flash)
32 ZF в цифрах Более 7 миллионов загрузок Более 500 разработчиков Более 1000 страниц в справочнике Более 500 примеров Более 60 проектов на SourceForge Более 30 проектов на Google Code Около 70 различных компонентов.
33 ZF::соглашения Class My_Class_Name должен находится в файле: My/Class/Name.php Cтиль кода во многом совпадает со стилями PEAR
34 ZF::Front Controller Pattern
35 Zend_Controller_Front Zend_Controller_Roulter_Rewrite (выбирает action для запуска) Zend_Controller_Dispatcher_Standard (вызыает action) Zend_Controller_Action (конкретный) Using Zend_Action_Helper Zend_Controller_Request Zend_View (использует Zend_View_Helper) Zend_Db_Table (Model ) Т.е. тут может быть Custom Model Zend_Controller_Response_Http
36 ZF::Модели Zend_Db_Table PDO $db = Zend_Db::factory($cfgDb->type, $params); Zend_Db_Table::setDefaultAapter($db); Zend_Registry::set("DB", $db);
37 ZF::Контроллеры Zend_Controller_Action ErrorHandler plugin ViewRenderer action helper plugin preDispatch postDispatch Init
38 ZF::View interface Zend_View_Interface public function render($name); public function assign($name); Zend_View_Abstract basePath, filters, helpers, _setHelperClass (filter) Zend/Controller/Action/Helper/ViewRenderer.php MyClass_View_Smarty extends Zend_View_Abstract
39 ZF::Проекты – движок для e- commerce, 0.5млн скачиваний, 30K users, 70 партнеров, 60+ языков, 150+ расширений (no java!) RightMedia – online реклама (NY) 4-5млрд показов в день, 100K запросов/с, 19K рекламодателей и партнеров (5 dev-6m) QEDWiki – IBM (mashups) PokerRoom.com – 12млн users (25 srv, 16front, 9mysql, i18n, docs, routes:{playpoker, pokerSpielen}: (seo), ZP+JavaBridge
40 Производительность Почти Hello World test ;-)
41 Обычная страница без ORM Ыф Вид теста: ab –n 1000 –c XXX 512 ram, Intel Pentium 14oo MHz, Windows XP cakePhp Zend CodeIgniter
42 Вместе с ORM, без кеша. Ыф 512Mb RAM 1.8Ghz AMD Sempron под Ubuntu Gutsy (7.10) cakePhp Zend CodeIgniter
43 Ыф 512Mb RAM 1.8Ghz AMD Sempron под Ubuntu Gutsy (7.10) Вместе с ORM, APC кэшем Ыф cakePhp 7.3 Zend CodeIgniter
44 Symfony performance
45 Проект на Zend Framework
46 ZF::Пример проекта. Создаем сайт-сообщество. Несколько языков, несколько доменов, различные уровни доступа к ресурсам, маршрутизация, ORM.
47 Организация разработки Zend Studio for Eclipse (или просто phpEclipse) Cruise Control + phpUnderControl PHPUnit (Себастьян Бергман) Smarty SVN Ajax: xajax/jQuery/Dojo/Prototype/и т.д. Firebug + FirePhp (FireZend) ORM (Doctrine) Memcached
48 Zend_Config site.ru.xml site.eu.xml site.zone.xml en ru
49 bootstrap.php initView(); initRoutes(); initFrontend();
50 $view = new Socnet_View_Smarty(); $vRender = new Zend_Controller_Action_Helper_ViewRenderer($view); $vRender->setViewBasePathSpec( dirname(__FILE__).'/V/smarty/templates') ->setViewScriptPathSpec(':module/:controller/:action.:suffix') ->setViewScriptPathNoControllerSpec(':action.:suffix') ->setViewSuffix('tpl'); Zend_Controller_Action_HelperBroker::addHelper($vRender);
51 Auth: $authAdapter = new Zend_Auth_Adapter_DbTable( $db, 'user', 'login', 'pass'); Zend_Registry::set("Auth", $authAdapter); Class myAdapter extends Zend_Auth_Adapter_Interface public function authenticate();
52 ACL $roleAdmin = new Zend_Acl_Role(Socnet_Auth_Acl::ADMIN); $this->addRole($roleAdmin, $roleMember); $this->addResource('forum/topic'); $this->deny(null, null); // Запрет всем для всего. $this->allow(null, 'forum'); // всем доступ к форуму $this->allow(null, 'ajax'); // всем к ajax $this->allow($admin, admin');
53 Маршрутизация $route = new Zend_Controller_Router_Route(ajax/:widgetNam e/:widgetAction', array( 'controller' => ajax', 'action' => 'index', 'widgetName' => '', 'widgetAction' => 'index' )); $router->addRoute('widget_request', $route);
55 Unit-тестирование /tests Auth Controller Domain Model Members AllTests.php setUpEnvinronment.php
58 Модели /generated |- BaseModelName ParticularModel extends BaseModelName phpDoctrine.yml fixtures
59 if (extension_loaded('memcache')) { $frontendOptions = array( 'lifetime' => 7200, // cache lifetime of 2 hours 'automatic_serialization' => true ); $backendOptions = array(); $frontend = 'Core'; $backend = 'Memcached'; } else { $frontendOptions = array( 'lifetime' => 7200, // cache lifetime of 2 hours 'automatic_serialization' => true ); $backendOptions = array( 'cache_dir' => dirname(__FILE__).'/../tmp/' // ); $frontend = 'Core'; $backend = 'File'; } $cache = Zend_Cache::factory($frontend, $backend, $frontendOptions, $backendOptions); Zend_Registry::set('cache', $cache);
60 Диспетчеризация extends Zend_Controller_Dispatcher_Standard $action = $this->getActionMethod($request); $doCall = !method_exists($controller, $action); $request->setDispatched(true); $controller->preDispatch(); $xajaxargs = $controller->_page->Xajax->getRequestParams(); $sResponse = call_user_func_array(array(&$controller, $action),$xajaxargs); if (is_a($sResponse, "xajaxResponse")) { $sResponse = $sResponse->getXML(); } header($sContentHeader); getXML(); } header($sContentHeader);">
61 motofriends.ru
62 Выводы:
63 Полезные ссылки Cakephp.org (cake-php.ru) – сайт фреймворка Cakeforge.com – набор готовых проектов на cake codeigniter.com (code-igniter.ru) – сайт фреймворка symfony-project.org - сайт фреймворка Framework.zend.com - сайт фреймворка Zendframework.ru - русский сайт + wiki (новый) (Интеграция Zend_Acl и MVC. Часть 1) (Интеграция Zend and Doctrine) (откуда инклюды) (Prepared statements in mysql) (Сравнение скорости PDO, ADOdb, MDB2, Zend_Db, и т.п.) (Сравнительный тест систем кэширования user data для PHP) (оптимизация Загрузки в 22 раза - Котеров) (обзорно про ZF) (Роутеры в Zend) (Zend_Tool – для создания рабочей копии проекта (еще одно сравнение фреймворков) (CI vs Cake) (Довольно хорошие сравнительные тесты)
64 (архитектура Zenda) (слои в архитектуре) (Zend Platform – aka Php Application Server – стоит почитать) (много интересных статей) (сравнение CodeIgniter с Cake) (матрица JS-фреймворков) (Symfony: 1st project ) (обзор производительности) (1-й проект на cake)
65 Есть вопросы? Icq: Skype: horal777 Алексей Граков
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.