2. Этот доклад был прочитан на конференции Байнет 2.2 Beta. Минск, 11-12 сентября 2008. официальный сайт: www.bynet2.org
3. Обычная разработка Cms 1 Cms 2 Super CMS Лучшая в мире CMS, потому, что я написал ее сам! Зачем что-то еще?
4.
5. Потребность в фреймворках Разработка нестандартных проектов. Желание иметь под рукой хороший инструмент, который будет: - развиваться - иметь хорошую документацию - иметь качественный код - обеспечивать достаточную гибкость - содержать компоненты на все случаи жизни - бесплатным
6. Преимущества фреймворков Один зверь, вместо зоопарка Ускорение сроков разработки Меньше внимания на мелочи, больше на бизнес логику Больший контроль над процессом и качеством разработки Хорошая документированность Быстрый ввод новичков на проект
10. CakePHP:: Возможности Совместим с PHP4 и PHP5 MVC Своя файловая структура Своя абстракция данных (либо Adodb, PEAR::Db) Поддержка плагинов Валидация Scaffolding Маршрутизация запросов Компоненты / Хелперы / i18n
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()
26. Symfony:: особенности Все классы начинаются с ‘sf’ (стандартные) class ##MODULE_NAME##Actions extends sfActions Много различного рода конфигурационных файлов.
27.
28. Symfony:: Известные проекты bookmarks.yahoo.com (20 млн пользователей) www.splitgames.fr (сайт обмена играми) www.kuss.de ( сайт знакомств) www.winkel.ro (доска объявлений)
29.
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
35. Zend_Controller_Response_Http 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
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:: Проекты www.magentocommerce.com – движок для e-commerce, 0.5 млн скачиваний, 30 K users , 70 партнеров, 60+ языков, 150+ расширений (no java!) RightMedia – online реклама ( NY) 4-5 млрд показов в день, 100 K запросов / с, 19 K рекламодателей и партнеров (5 dev-6m) QEDWiki – IBM (mashups) PokerRoom.com – 12 млн users (25 srv, 16front, 9mysql, i18n, docs, routes:{playpoker, pokerSpielen}: (seo), ZP+JavaBridge
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
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');
63. Полезные ссылки Cakephp.org (cake-php.ru) – сайт фреймворка Cakeforge.com – набор готовых проектов на cake codeigniter.com (code-igniter.ru) – сайт фреймворка symfony-project.org - сайт фреймворка Framework.zend.com - сайт фреймворка Zendframework.ru - русский сайт + wiki ( новый) http://habrahabr.ru/blogs/zend_framework/31639/ (Интеграция Zend_Acl и MVC. Часть 1) http://lobach.info/develop/zf/integrating-zend-framework-and-doctrine/ (Интеграция Zend and Doctrin e ) http://phpimpact.wordpress.com/2008/08/04/php-applications-where-is-the-include-coming-from/ ( откуда инклюды) http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html (Prepared statements in mysql ) http://vanav.com.ua/post397 ( Сравнение скорости PDO, ADOdb, MDB2, Zend_Db , и т.п.) http://club.shelek.ru/viewart.php?id=300 (Сравнительный тест систем кэширования user data для PHP) http://www.dklab.ru/chicken/nablas/49.html ( оптимизация Загрузки в 22 раза - Котеров) http :// zendframework . ru / articles / chto _ takoe _ zend _ framework / (обзорно про ZF) http :// kpumuk . info / php / zend - framework - router - for - subdirectory - based - site /# more -31 ( Роутеры в Zend) http://devzone.zend.com/article/3811-Using-Zend_Tool-to-start-up-your-ZF-Project (Zend _ Tool – для создания рабочей копии проекта http://www.avnetlabs.com/php/php-frameworks-revisited-codeigniter-vs-zend-framework ( еще одно сравнение фреймворков) http://snook.ca/archives/php/codeigniter_vs_cakephp/ ( CI vs Cake) http://www.avnetlabs.com/php/php-framework-comparison-benchmarks ( Довольно хорошие сравнительные тесты)
64. http://phpimpact.wordpress.com/2008/07/28/zend-framework-architecture/ ( архитектура Zend’a) http :// wiki . ringsidenetworks . org / display / ringside / Layering + and + Caching + Design ( слои в архитектуре ) http://www.zend.com/en/products/platform/ (Zend Platform – aka Php Application Server – стоит почитать) http://phpimpact.wordpress.com/category/frameworks/ (много интересных статей) http :// www . setti . biz /574/ (сравнение CodeIgniter с Cake ) http://ajaxpatterns.org/Frameworks_Matrix (матрица JS -фреймворков) http://www.symfony-project.org/tutorial/1_0/my-first-project (Symfony: 1st project ) http://paul-m-jones.com/blog/?p=236 (обзор производительности) http://manual.cakephp.org/view/326/the-cake-blog-tutorial (1-й проект на cake)