Your SlideShare is downloading. ×
php frameworks
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

php frameworks

4,673

Published on

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,673
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
59
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Граков Алексей Antalika.com
  • 2.
    • Этот доклад был прочитан на конференции Байнет 2.2 Beta. Минск, 11-12 сентября 2008. официальный сайт: www.bynet2.org
  • 3. Обычная разработка
    • Cms 1
    • Cms 2
    • Super CMS
    • Лучшая в мире CMS, потому, что я написал ее сам!
    • Зачем что-то еще?
  • 4.  
  • 5. Потребность в фреймворках
    • Разработка нестандартных проектов.
    • Желание иметь под рукой хороший инструмент, который будет:
    • - развиваться
    • - иметь хорошую документацию
    • - иметь качественный код
    • - обеспечивать достаточную гибкость
    • - содержать компоненты на все случаи жизни
    • - бесплатным
  • 6. Преимущества фреймворков
      • Один зверь, вместо зоопарка
      • Ускорение сроков разработки
      • Меньше внимания на мелочи, больше на бизнес логику
      • Больший контроль над процессом и качеством разработки
      • Хорошая документированность
      • Быстрый ввод новичков на проект
  • 7. Php- фреймворки:
    • codeIgniter
    • cakePHP
    • Symfony
    • Zend Framework
  • 8. Цитируемость фреймворков в поисковиках Поисковик CakePhp Symfony CodeIgniter Zend Framework Google (world ) 3,680,000 1,440,000 544,000 3,280,000 Google EN 3,250,000 497,000 361,000 2,040,000 Google . ru 28100 20020 28,500 36,900 Yandex 90, 000 68, 000 87, 000 333, 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 в среднем .
    • Время отклика : 0.3-0.5 сек
  • 17.
    • Code Igniter
  • 18. CodeIgniter
    • Текущая версия 1.6.3
    • Гибкость
    • Плагины / Хелперы
    • Скаффолдинг
    • Простота (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
    • Много различного рода конфигурационных файлов.
  • 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
  • 34. ZF::Front Controller Pattern
  • 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
  • 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:: Проекты
    • 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
  • 40. Производительность
    • Почти Hello World test ;-)
  • 41. Обычная страница без ORM
    • Ыф
    • Вид теста: ab – n 1000 – c XXX
    • 512 ram, Intel Pentium 14oo MHz , Windows XP
    1 10 50 cakePhp 5.21 4.98 5.02 Zend 7.67 7.86 7.77 CodeIgniter 1 6 . 13 15.44 15.42
  • 42. Вместе с ORM , без кеша.
    • Ыф
    • 512Mb RAM 1.8Ghz AMD Sempron под Ubuntu Gutsy (7.10)
    1 10 50 cakePhp 3.6 3.7 3.8 Zend 21.5 21.2 21.7 CodeIgniter 9.3 9.1 9.2
  • 43. Ыф 512Mb RAM 1.8Ghz AMD Sempron под Ubuntu Gutsy (7.10) Вместе с ORM , APC кэшем
    • Ыф
    1 10 50 cakePhp 7.3 7.3 7.3 Zend 97.5 98.0 96.6 CodeIgniter 32.8 33.3 31.8
  • 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
    • <languages>
    • <language>en</language>
    • <language>ru</language>
    • </languages>
  • 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(&quot;Auth&quot;, $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/:widgetName/:widgetAction',
    • array(
    • 'controller' => ‘ajax',
    • 'action' => 'index',
    • 'widgetName' => '',
    • 'widgetAction' => 'index'
    • ));
    • $router->addRoute( 'widget_request', $route);
  • 54.  
  • 55. Unit- тестирование
    • /tests
    • Auth
    • Controller
    • Domain
    • Model
    • Members
    • AllTests.php
    • setUpEnvinronment.php
  • 56.  
  • 57.  
  • 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, &quot;xajaxResponse&quot;)) {
    • $sResponse = $sResponse->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 ( новый)
    • 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)
  • 65. Есть вопросы?
    • [email_address]
    • Icq: 286-41-77-45
    • Skype: horal777
    • Алексей Граков

×