php frameworks

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    php frameworks - Presentation Transcript

    1. Граков Алексей Antalika.com
      • Этот доклад был прочитан на конференции Байнет 2.2 Beta. Минск, 11-12 сентября 2008. официальный сайт: www.bynet2.org
    2. Обычная разработка
      • Cms 1
      • Cms 2
      • Super CMS
      • Лучшая в мире CMS, потому, что я написал ее сам!
      • Зачем что-то еще?
    3.  
    4. Потребность в фреймворках
      • Разработка нестандартных проектов.
      • Желание иметь под рукой хороший инструмент, который будет:
      • - развиваться
      • - иметь хорошую документацию
      • - иметь качественный код
      • - обеспечивать достаточную гибкость
      • - содержать компоненты на все случаи жизни
      • - бесплатным
    5. Преимущества фреймворков
        • Один зверь, вместо зоопарка
        • Ускорение сроков разработки
        • Меньше внимания на мелочи, больше на бизнес логику
        • Больший контроль над процессом и качеством разработки
        • Хорошая документированность
        • Быстрый ввод новичков на проект
    6. Php- фреймворки:
      • codeIgniter
      • cakePHP
      • Symfony
      • Zend Framework
    7. Цитируемость фреймворков в поисковиках Поисковик 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
              • Cake PHP
    8. CakePHP:: Возможности
      • Совместим с PHP4 и PHP5
      • MVC
      • Своя файловая структура
      • Своя абстракция данных (либо Adodb, PEAR::Db)
      • Поддержка плагинов
      • Валидация
      • Scaffolding
      • Маршрутизация запросов
      • Компоненты / Хелперы / i18n
    9. CakePHP:: Обработка запросов
    10. CakePHP:: Соглашения
      • Класс KissesAndHugsController должен храниться в   файле kisses_and_hugs_controller.php
      • Название модели записывается в ед. числе: Book , MyBook , и т.п. 
      • Названия таблиц должны быть в множественном числе, и через подчеркивание: my _ year _ books
      • Названия множественном числе. BooksController , OxenController .
    11. CakePHP:: Контроллеры
      • index – метод по умолчанию ( site.com/books/ )
      • Методы контроллера  
      • beforeFilter – до логики
      • beforeRender – до view
      • afterFilter – после логики и после view
    12. CakePHP:: Модели
      • Доступные методы в каждой модели:
      • beforeFind()
      • afterFind()
      • beforeValidate()
      • beforeSave()
      • afterSave()
      • beforeDelete()
      • afterDelete()
    13. CakePHP:: Шаблоны
      • Чистый PHP
      • Smarty
      • Место нахождения шаблона:
      • /app/views/people/index. tpl
    14. 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 сек
      • Code Igniter
    15. CodeIgniter
      • Текущая версия 1.6.3
      • Гибкость
      • Плагины / Хелперы
      • Скаффолдинг
      • Простота (loose coupling)
      • MVC
      • Поддержка PHP4
      • Настройка параметров автозагрузки
    16. CI:: Ход работы приложения
    17. CodeIgniter:: модели
      • Классы моделей хранятся в папке application/models/
      • Класс: Model_name  
      • Имя файла:
      • application/models/ user_model.php
      • Загрузка:
      • $this->load->model(' Model_name '); $this-> Model_name ->function();
    18. CodeIgniter ::Контроллеры
      • application/config/routes.php – маршруты
      • $route['default_controller'] = ‘ XXX_controller ';
      • class My_class extends Controller { ….
      • }
      • _remap ()
    19. CodeIgniter::View
      • class Privet extends Controller
      • {
      • … .
      • }
      • Загрузка:
      • $this->load->view(' name ');
      • Symfony
    20. Symfony:: использует
      • Creole – абстракция с БД
      • Propel ( PDO с 1.2)
      • Prado для i18n
      • Spyc YAML парсинг
      • Pake для командной строки (symfony 1.0)
      • Prototype, Script.aculo.us, Dynarch.com, TinyMCE
    21. Symfony:: возможности
      • I18n, l10n, cache, валидация и т.п.
      • Scaffolding
      • Генерация кода
      • AdminGenerator
      • Независимые блоки ( Loose coupling)
      • Маршрутизация
      • Хелперы
      • Debug
    22. Symfony:: особенности
      • Все классы начинаются с ‘sf’ (стандартные)
      • class ##MODULE_NAME##Actions extends sfActions
      • Много различного рода конфигурационных файлов.
    23.  
    24. Symfony:: Известные проекты
      • bookmarks.yahoo.com (20 млн пользователей)
      • www.splitgames.fr (сайт обмена играми)
      • www.kuss.de ( сайт знакомств)
      • www.winkel.ro (доска объявлений)
    25.  
    26. 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
    27. Новое в ZF 1.6 RC1
      • Интеграция с Dojo
      • Поддержка с SOAP
      • Unit -тесты для контроллеров
      • Поддержка индексных файлов Lucene 2.3
      • Zend_Session – обработчик сохранения
      • Paginator
      • Zend_Config_Xml – поддержка атрибутов
      • Медиа хелперы ( QuickTime, Flash)
    28. ZF в цифрах
      • Более 7 миллионов загрузок
      • Более 500 разработчиков
      • Более 1000 страниц в справочнике
      • Более 500 примеров
      • Более 60 проектов на SourceForge
      • Более 30 проектов на Google Code
      • Около 70 различных компонентов.
    29. ZF:: соглашения
      • Class My_Class_Name должен находится в файле :
      • My/Class/Name.php
      • C тиль кода во многом совпадает со стилями PEAR
    30. ZF::Front Controller Pattern
    31. 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
    32. ZF:: Модели
      • Zend_Db_Table
      • PDO
      • $db = Zend_Db::factory($cfgDb->type, $params);
      • Zend_Db_Table::setDefaultAapter($db);
      • Zend_Registry::set("DB", $db);
    33. ZF:: Контроллеры
      • Zend_Controller_Action
      • ErrorHandler plugin
      • ViewRenderer action helper plugin
      • preDispatch
      • postDispatch
      • Init
    34. 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
    35. 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
    36. Производительность
      • Почти Hello World test ;-)
    37. Обычная страница без 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
    38. Вместе с 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
    39. Ыф 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
    40. Symfony performance
      • Проект на
      • Zend Framework
    41. ZF:: Пример проекта.
      • Создаем сайт-сообщество. Несколько языков, несколько доменов, различные уровни доступа к ресурсам, маршрутизация, ORM.
    42. Организация разработки
      • Zend Studio for Eclipse (или просто phpEclipse)
      • Cruise Control + phpUnderControl
      • PHPUnit ( Себастьян Бергман)
      • Smarty
      • SVN
      • Ajax: xajax/jQuery/Dojo/Prototype/ и т.д.
      • Firebug + FirePhp (FireZend)
      • ORM (Doctrine)
      • Memcached
    43. Zend_Config
      • site.ru.xml
      • site.eu.xml
      • site.zone.xml
      • <languages>
      • <language>en</language>
      • <language>ru</language>
      • </languages>
    44. bootstrap.php
      • initView();
      • initRoutes();
      • initFrontend();
      • $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);
    45. 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();
    46. 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');
    47. Маршрутизация
      • $route = new Zend_Controller_Router_Route(ajax/:widgetName/:widgetAction',
      • array(
      • 'controller' => ‘ajax',
      • 'action' => 'index',
      • 'widgetName' => '',
      • 'widgetAction' => 'index'
      • ));
      • $router->addRoute( 'widget_request', $route);
    48.  
    49. Unit- тестирование
      • /tests
      • Auth
      • Controller
      • Domain
      • Model
      • Members
      • AllTests.php
      • setUpEnvinronment.php
    50.  
    51.  
    52. Модели
      • /generated
      • |- BaseModelName
      • ParticularModel extends BaseModelName
      • phpDoctrine
      • .yml
      • fixtures
      • 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);
    53. Диспетчеризация
      • 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);
    54. motofriends.ru
    55. Выводы:
    56. Полезные ссылки
      • 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 ( Довольно хорошие сравнительные тесты)
      • 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)
    57. Есть вопросы?
      • [email_address]
      • Icq: 286-41-77-45
      • Skype: horal777
      • Алексей Граков

    + art23art23, 8 months ago

    custom

    1381 views, 0 favs, 0 embeds more stats

    More Info

    © All Rights Reserved

    Go to text version
    • Total Views 1381
      • 1381 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 16
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as innappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel

    Categories