Обзор PHP-фреймвокров.Разработка веб-проектов на Zend Framework презентация

Содержание

Этот доклад был прочитан на конференции Байнет 2.2 Beta. Минск, 11-12 сентября 2008. официальный сайт: www.bynet2.org

Слайд 1Обзор PHP-фреймвокров. Разработка веб-проектов на Zend Framework
Граков Алексей
Antalika.com


Слайд 2Этот доклад был прочитан на конференции Байнет 2.2 Beta. Минск, 11-12

сентября 2008. официальный сайт: www.bynet2.org

Слайд 3Обычная разработка
Cms 1
Cms 2
Super CMS
Лучшая в мире CMS, потому,

что я написал ее сам!

Зачем что-то еще?


Слайд 5Потребность в фреймворках
Разработка нестандартных проектов.
Желание иметь под рукой хороший инструмент,

который будет:
- развиваться
- иметь хорошую документацию
- иметь качественный код
- обеспечивать достаточную гибкость
- содержать компоненты на все случаи жизни
- бесплатным


Слайд 6Преимущества фреймворков
Один зверь, вместо зоопарка
Ускорение сроков разработки
Меньше внимания на мелочи, больше

на бизнес логику
Больший контроль над процессом и качеством разработки
Хорошая документированность
Быстрый ввод новичков на проект





Слайд 7Php-фреймворки:

codeIgniter
cakePHP
Symfony
Zend Framework



Слайд 8 Цитируемость фреймворков в поисковиках


Слайд 9



Cake PHP


Слайд 10CakePHP::Возможности
Совместим с PHP4 и PHP5
MVC
Своя файловая структура
Своя абстракция данных (либо Adodb,

PEAR::Db)
Поддержка плагинов
Валидация
Scaffolding
Маршрутизация запросов
Компоненты / Хелперы / i18n



Слайд 11CakePHP::Обработка запросов


Слайд 12CakePHP::Соглашения
Класс KissesAndHugsController должен храниться в файле kisses_and_hugs_controller.php

Название модели записывается в ед.

числе: Book, MyBook, и т.п. 

Названия таблиц должны быть в множественном числе, и через подчеркивание: my_year_books

Названия множественном числе. BooksController, OxenController.




Слайд 13CakePHP::Контроллеры
index – метод по умолчанию ( site.com/books/ )

Методы контроллера  
beforeFilter –

до логики
beforeRender – до view
afterFilter – после логики и после view

Слайд 14CakePHP::Модели
Доступные методы в каждой модели:
beforeFind()
afterFind()
beforeValidate()
beforeSave()
afterSave()
beforeDelete()
afterDelete()


Слайд 15CakePHP::Шаблоны
Чистый PHP
Smarty
Место нахождения шаблона:
/app/views/people/index.tpl



Слайд 16CakePHP::Проекты
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



Слайд 18CodeIgniter
Текущая версия 1.6.3
Гибкость
Плагины / Хелперы
Скаффолдинг
Простота (loose coupling)
MVC
Поддержка PHP4
Настройка параметров автозагрузки



Слайд 19CI::Ход работы приложения


Слайд 20CodeIgniter::модели
Классы моделей хранятся в папке application/models/
Класс: Model_name 
Имя файла:

application/models/user_model.php

Загрузка:
$this->load->model('Model_name'); $this->Model_name->function();

Слайд 21CodeIgniter::Контроллеры
application/config/routes.php – маршруты
$route['default_controller'] = ‘XXX_controller';
class My_class extends Controller {

….
}
_remap ()


Слайд 22CodeIgniter::View
class Privet extends Controller
{
….
}

Загрузка:

$this->load->view('name');


Слайд 23



Symfony


Слайд 24Symfony::использует
Creole – абстракция с БД
Propel ( PDO

с 1.2)
Prado для i18n
Spyc YAML парсинг
Pake для командной строки(symfony 1.0)

Prototype, Script.aculo.us, Dynarch.com, TinyMCE


Слайд 25Symfony::возможности

I18n, l10n, cache, валидация и т.п.
Scaffolding
Генерация кода
AdminGenerator
Независимые блоки (Loose

coupling)
Маршрутизация
Хелперы
Debug


Слайд 26Symfony::особенности

Все классы начинаются с ‘sf’ (стандартные)

class ##MODULE_NAME##Actions extends sfActions

Много различного

рода конфигурационных файлов.



Слайд 28Symfony::Известные проекты
bookmarks.yahoo.com (20 млн пользователей)
www.splitgames.fr (сайт обмена играми)
www.kuss.de (сайт знакомств)
www.winkel.ro (доска

объявлений)

Слайд 30Zend 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)


Слайд 32ZF в цифрах
Более 7 миллионов загрузок
Более 500

разработчиков
Более 1000 страниц в справочнике
Более 500 примеров
Более 60 проектов на SourceForge
Более 30 проектов на Google Code

Около 70 различных компонентов.

Слайд 33ZF::соглашения
Class My_Class_Name должен находится в файле:

My/Class/Name.php

Cтиль кода во многом совпадает

со стилями PEAR





Слайд 34ZF::Front Controller Pattern


Слайд 35


Zend_Controller_Response_Http








Слайд 36ZF::Модели
Zend_Db_Table
PDO

$db = Zend_Db::factory($cfgDb->type, $params);
Zend_Db_Table::setDefaultAapter($db);
Zend_Registry::set("DB", $db);



Слайд 37ZF::Контроллеры
Zend_Controller_Action
ErrorHandler plugin

ViewRenderer action helper plugin

preDispatch
postDispatch
Init


Слайд 38ZF::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





Слайд 39ZF::Проекты
www.magentocommerce.com – движок для 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



Слайд 42

Вместе с ORM, без кеша.
Ыф





512Mb RAM 1.8Ghz AMD Sempron

под Ubuntu Gutsy (7.10)




Слайд 43 Ыф 512Mb RAM 1.8Ghz AMD Sempron под Ubuntu Gutsy (7.10)




Вместе с ORM, APC кэшем

Ыф









Слайд 44Symfony performance


Слайд 45
Проект на
Zend Framework


Слайд 46ZF::Пример проекта.
Создаем сайт-сообщество. Несколько языков, несколько доменов, различные уровни доступа к

ресурсам, маршрутизация, ORM.


Слайд 47Организация разработки
Zend Studio for Eclipse (или просто phpEclipse)
Cruise Control + phpUnderControl
PHPUnit

(Себастьян Бергман)
Smarty
SVN
Ajax: xajax/jQuery/Dojo/Prototype/и т.д.
Firebug + FirePhp (FireZend)
ORM (Doctrine)
Memcached



Слайд 48Zend_Config
site.ru.xml
site.eu.xml
site.zone.xml

en

ru


Слайд 49bootstrap.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();


Слайд 52ACL
$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);

Слайд 55Unit-тестирование
/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);

Слайд 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 Doctrine)
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 раза - Котеров)
httphttp://http://zendframeworkhttp://zendframework.http://zendframework.ruhttp://zendframework.ru/http://zendframework.ru/articleshttp://zendframework.ru/articles/http://zendframework.ru/articles/chtohttp://zendframework.ru/articles/chto_http://zendframework.ru/articles/chto_takoehttp://zendframework.ru/articles/chto_takoe_http://zendframework.ru/articles/chto_takoe_zendhttp://zendframework.ru/articles/chto_takoe_zend_http://zendframework.ru/articles/chto_takoe_zend_frameworkhttp://zendframework.ru/articles/chto_takoe_zend_framework/ (обзорно про ZF)
httphttp://http://kpumukhttp://kpumuk.http://kpumuk.infohttp://kpumuk.info/http://kpumuk.info/phphttp://kpumuk.info/php/http://kpumuk.info/php/zendhttp://kpumuk.info/php/zend-http://kpumuk.info/php/zend-frameworkhttp://kpumuk.info/php/zend-framework-http://kpumuk.info/php/zend-framework-routerhttp://kpumuk.info/php/zend-framework-router-http://kpumuk.info/php/zend-framework-router-forhttp://kpumuk.info/php/zend-framework-router-for-http://kpumuk.info/php/zend-framework-router-for-subdirectoryhttp://kpumuk.info/php/zend-framework-router-for-subdirectory-http://kpumuk.info/php/zend-framework-router-for-subdirectory-basedhttp://kpumuk.info/php/zend-framework-router-for-subdirectory-based-http://kpumuk.info/php/zend-framework-router-for-subdirectory-based-sitehttp://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/#http://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/#morehttp://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)

httphttp://http://wikihttp://wiki.http://wiki.ringsidenetworkshttp://wiki.ringsidenetworks.http://wiki.ringsidenetworks.orghttp://wiki.ringsidenetworks.org/http://wiki.ringsidenetworks.org/displayhttp://wiki.ringsidenetworks.org/display/http://wiki.ringsidenetworks.org/display/ringsidehttp://wiki.ringsidenetworks.org/display/ringside/http://wiki.ringsidenetworks.org/display/ringside/Layeringhttp://wiki.ringsidenetworks.org/display/ringside/Layering+http://wiki.ringsidenetworks.org/display/ringside/Layering+andhttp://wiki.ringsidenetworks.org/display/ringside/Layering+and+http://wiki.ringsidenetworks.org/display/ringside/Layering+and+Cachinghttp://wiki.ringsidenetworks.org/display/ringside/Layering+and+Caching+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/ (много интересных статей)
httphttp://http://wwwhttp://www.http://www.settihttp://www.setti.http://www.setti.bizhttp://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Есть вопросы?
alex@antalika.com
Icq: 286-41-77-45
Skype: horal777
Алексей Граков





Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика