SlideShare a Scribd company logo
Zend Framework и Doctrine Степан Танасийчук [email_address]
Чем я занимаюсь? Web разработкой занялся в 2003 году
С Zend Framework начал работать в 2008 году
Руковожу собственной веб-студией с 2009 года
Активный участник сообщества zendframework.ru
Люблю прикольные смайлы :]
Содержание доклада Подключение Doctrine к ZF проекту
Скрипт для работы с Doctrine_Cli
Генерация моделей по YAML схемам
Механизм миграций
Наследование в моделях
Шаблоны расширений
Адаптер для Zend_Auth
Адаптер для Zend_Paginator
ZFEngine и использование Doctrine в модульном ZF приложении
Несколько слов о Doctrine ORM библиотека для PHP 5.2.3+
Использует паттерны Active Record, Data Mapper и Metadata Mapping
Собственный язык запросов — DQL (по мотивам HQL)
Связи один-к-одному, один-ко-многим и многие-к-многим
Автогенерация моделей по yaml схемам
Экспорт и импорт из/в yaml
Механизм миграций
Шаблоны поведений (l18n, Versionable, NestedSet, etc.)
Подключаем Doctrine к ZF проекту Размещаем Doctrine в library/Doctrine:
$   svn export http://svn.doctrine-project.org/tags/1.2.1/lib/Doctrine/ ./library/Doctrine
Прописываем следующие настройки в application.ini:
autoloadernamespaces[] =  "Doctrine"
Parables_Application_Resource_Doctrine Matthew Lurz  добавил в Zend Framework proposal application-ресурс для подключения Doctrine.  Его класс называется  Parables_Application_Resource_Doctrine  и лежит здесь  http://github.com/mlurz71/parables
ZFEngine_Application_Resource_Doctrine Мы немного изменили код  Parables_Application_Resource_Doctrine  для работы с Doctrine 1.2.x и храним его в репозитории ZFEngine как  ZFEngine_Application_Resource_Doctrine ZFEngine это сборная солянка классов, которые мы используем при разработке проектов на ZF. Лежит все здесь:  http://zfengine.com В основном код наш. Также есть чужой, но с некоторыми изменениями. Надеюсь, что это все в рамках закона ^_~.
Подключаем ZFEngine к ZF проекту Размещаем ZFEngine в library/ZFEngine:
$  svn export http://svn2.assembla.com/svn/zfengine/trunk/library/ZFEngine/ ./library/ZFEngine
Прописываем следующие настройки в application.ini:
autoloadernamespaces[] =  "ZFEngine"
pluginPaths.ZFEngine_Application_Resource =  "ZFEngine/Application/Resource"
Настраиваем подключение к БД resources.doctrine.connections.primary.dsn.adapter =  "mysql" resources.doctrine.connections.primary.dsn.username =  "root" resources.doctrine.connections.primary.dsn.password =  "******" resources.doctrine.connections.primary.dsn.host =  "localhost" resources.doctrine.connections.primary.dsn.dbname =  "zfconf" resources.doctrine.connections.primary.options.charset =  "utf8" resources.doctrine.connections.primary.options.collate =  "utf8_unicode_ci"
Настраиваем  Doctrine_Manager resources.doctrine.manager.attributes.attr_autoload_table_classes =  1 resources.doctrine.manager.attributes.attr_use_native_enum =  1 resources.doctrine.manager.attributes.attr_quote_identifier =  1 resources.doctrine.manager.attributes.attr_auto_free_query_objects =  1 resources.doctrine.manager.attributes.attr_auto_accessor_override =  1 resources.doctrine.manager.attributes.attr_model_loading =  "model_loading_conservative"
MODEL_LOADING_PEAR В Doctrine 1.2 появился новый режим для автозагрузки моделей  —   MODEL_LOADING_PEAR , но при использовании этого режима не работает generate-migration-diff :(. Я заметил это уже в процессе подготовки доклада и пока просто написал в багрепорт Doctrine.
Для проектов с НЕмодульной структурой Указываем путь к директории с моделями:
resources.doctrine.manager.models_path = APPLICATION_PATH "/models"
Настраиваем кеширование resources.doctrine.manager.*
.attributes.attr_result_cache.driver =  "memcache"
.attributes.attr_result_cache.lifespan =  3600
.attributes.attr_result_cache.options.servers.host =  "localhost"
.attributes.attr_result_cache.options.servers.port =  11211
.attributes.attr_result_cache.options.servers.persistent =  1
.attributes.attr_result_cache.options.compression =  0
Настраиваем Doctrine_Cli doctrine_cli.data_fixtures_path =  APPLICATION_PATH "/configs/doctrine/data/fixtures" doctrine_cli.models_path =  APPLICATION_PATH "/models" doctrine_cli.migrations_path =  APPLICATION_PATH "/configs/doctrine/migrations" doctrine_cli.sql_path =  APPLICATION_PATH "/configs/doctrine/data/sql" doctrine_cli.yaml_schema_path =  APPLICATION_PATH "/configs/doctrine/schema" doctrine_cli.generate_models_options.generateBaseClasses =  1 doctrine_cli.generate_models_options.baseClassesDirectory =  "Base" doctrine_cli.generate_models_options.generateTableClasses =  1
Cкрипт для работы с Doctrine_Cli ./application/sripts/common.php <?php define( 'APPLICATION_ENV' ,  'development' ); define( 'APPLICATION_PATH' , realpath(dirname(__FILE__) .  '/..' )); set_include_path(implode(PATH_SEPARATOR,  array ( realpath(APPLICATION_PATH .  '/../library' ), get_include_path(), )));
Cкрипт для работы с Doctrine_Cli ./application/sripts/doctrine #!/usr/bin/env php <?php require_once   'common.php' ; require_once   'Zend/Application.php' ; $application  =  new  Zend_Application( APPLICATION_ENV, APPLICATION_PATH .  '/configs/application.ini' ); $application ->getBootstrap() ->bootstrap(); $cli  =  new  Doctrine_Cli( $application ->getOption( 'doctrine_cli' )); $cli ->run($_SERVER[ 'argv' ]);
Проверяем как работает Запускаем скрипт без параметров:
$   ./application/sripts/doctrine
Doctrine Command Line Interface
./application/sripts/doctrine generate-sql
./application/sripts/doctrine create-db
./application/sripts/doctrine generate-yaml-models
./application/sripts/doctrine dql
./application/sripts/doctrine generate-migrations-models
./application/sripts/doctrine generate-yaml-db
./application/sripts/doctrine generate-models-yaml
./application/sripts/doctrine generate-migrations-diff

More Related Content

PDF
Zend Framework и Doctrine
PPT
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
PDF
Что нового в Perl? 5.10 — 5.16
ODP
Saint Perl 2009: CGI::Ajax demo
PDF
Чуть сложнее чем Singleton: аннотации, IOC, АОП
PPT
Groovy On Grails
PPT
ZFConf 2010: Zend Framework and Multilingual
PPTX
PHP basic
Zend Framework и Doctrine
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
Что нового в Perl? 5.10 — 5.16
Saint Perl 2009: CGI::Ajax demo
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Groovy On Grails
ZFConf 2010: Zend Framework and Multilingual
PHP basic

What's hot (20)

PPT
Js Http Request дмитрий котеров
PPT
Functional Programming Dev Club 2009 - final
PDF
Zend framework 2
PDF
Cобачники против кинофобов
PPTX
Тестирование программных фильтров безопасности
PPT
бегун
PPT
бегун
PDF
Почему Mojolicious?
PPT
Symfony2 practice
PPT
Что нового в PHP-5.3
PPTX
Оптимизация трассирования с использованием Expression templates
PPT
Easy authcache 2 кеширование для pro родионов игорь
PDF
Component Inspector
PDF
Контроль качества верстки или как начать делать Makeup
PDF
Как мы делаем модули PHP в Badoo – Антон Довгаль
PDF
Zend Framework и мультиязычность
ODP
Семинар-практикум по Drupal
PDF
Параллельные вычисления в Perl 6
PDF
Пластилиновый код: как перестать кодить и начать жить
PDF
JavaScript. Loops and functions (in russian)
Js Http Request дмитрий котеров
Functional Programming Dev Club 2009 - final
Zend framework 2
Cобачники против кинофобов
Тестирование программных фильтров безопасности
бегун
бегун
Почему Mojolicious?
Symfony2 practice
Что нового в PHP-5.3
Оптимизация трассирования с использованием Expression templates
Easy authcache 2 кеширование для pro родионов игорь
Component Inspector
Контроль качества верстки или как начать делать Makeup
Как мы делаем модули PHP в Badoo – Антон Довгаль
Zend Framework и мультиязычность
Семинар-практикум по Drupal
Параллельные вычисления в Perl 6
Пластилиновый код: как перестать кодить и начать жить
JavaScript. Loops and functions (in russian)
Ad

Viewers also liked (20)

PPT
LD_March2010_forweb
PDF
กำแพงเบอร์ลิน
PDF
Galicia sindical folga xeral
PPT
TEMA 1B GRAMMAR ADJECTIVE PLACEMENT
PPTX
Depression eng
PPT
TEMA 4B IR+A+Infinitive
PPTX
Blackbox
PPT
Caraka - BNI sketsa keinginan
PDF
Plan igualdad champion
PDF
Dia abril
PDF
Cispl times. выпуск №1
PPTX
Personal Learning Network
PDF
National Oil Fund of Kazakhstan (Presentation)
PDF
India Horizontal Plant
PPT
Logistiek 30 Okt 2003
PDF
Työkaluviidakosta markkinoinnin mittaamiseen, DiViA 22.10.2014
PDF
Doing Business With Aboriginal People
PPT
Clase 2 farmacos
ODP
Tales of Symphonia Informatica
LD_March2010_forweb
กำแพงเบอร์ลิน
Galicia sindical folga xeral
TEMA 1B GRAMMAR ADJECTIVE PLACEMENT
Depression eng
TEMA 4B IR+A+Infinitive
Blackbox
Caraka - BNI sketsa keinginan
Plan igualdad champion
Dia abril
Cispl times. выпуск №1
Personal Learning Network
National Oil Fund of Kazakhstan (Presentation)
India Horizontal Plant
Logistiek 30 Okt 2003
Työkaluviidakosta markkinoinnin mittaamiseen, DiViA 22.10.2014
Doing Business With Aboriginal People
Clase 2 farmacos
Tales of Symphonia Informatica
Ad

Similar to ZFConf 2010: Zend Framework and Doctrine (20)

PDF
Страх и ненависть в исходном коде
PPT
Django South. Миграция баз данных.
PPTX
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
PPT
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.
PPT
Введение в Django
PPT
Alexander manuhin selenium_php_v2.0
PPTX
Silverlight 4, есть ли жизнь на десктопе?
PPTX
Problems of Automated Generation of Exploits on the Basis of Source Code
ODP
Документирование исходных текстов (javadoc)
PDF
C++ осень 2012 лекция 9
PPTX
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
PPTX
PHP 5.4: Что нового?
PPT
Rich UI on Dojo Toolkit and Zend Framework
PPT
Импорт данных с фреймворком Migrate. Владислав Богатырев.
PPT
Yserver
PPT
ZFConf 2010: jQuery and Dojo Toolkit JavaScript-frameworks Integration with Z...
PPT
Perl in practice
PPTX
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Страх и ненависть в исходном коде
Django South. Миграция баз данных.
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.
Введение в Django
Alexander manuhin selenium_php_v2.0
Silverlight 4, есть ли жизнь на десктопе?
Problems of Automated Generation of Exploits on the Basis of Source Code
Документирование исходных текстов (javadoc)
C++ осень 2012 лекция 9
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
PHP 5.4: Что нового?
Rich UI on Dojo Toolkit and Zend Framework
Импорт данных с фреймворком Migrate. Владислав Богатырев.
Yserver
ZFConf 2010: jQuery and Dojo Toolkit JavaScript-frameworks Integration with Z...
Perl in practice
Взломать Web-сайт на ASP.NET? Сложно, но можно!

More from ZFConf Conference (20)

PPTX
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
PPT
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
PDF
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)
PDF
ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса раз...
PPTX
ZFConf 2012: Реализация доступа к СУБД IBM DB2 посредством встраиваемого SQL ...
PDF
ZFConf 2012: Code Generation и Scaffolding в Zend Framework 2 (Виктор Фараздаги)
PDF
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ODP
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
PPT
ZFConf 2011: Что такое Sphinx, зачем он вообще нужен и как его использовать с...
PPTX
ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...
PPTX
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
PPT
ZFConf 2011: Гибкая архитектура Zend Framework приложений с использованием De...
PDF
ZFConf 2011: Behavior Driven Development в PHP и Zend Framework (Константин К...
PPT
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
PPT
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
PPT
ZFConf 2010: History of e-Shtab.ru
PPTX
ZFConf 2010: Fotostrana.ru: Prototyping Project with Zend Framework
PPT
ZFConf 2010: Performance of Zend Framework Applications
PPT
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
PPTX
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)
ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса раз...
ZFConf 2012: Реализация доступа к СУБД IBM DB2 посредством встраиваемого SQL ...
ZFConf 2012: Code Generation и Scaffolding в Zend Framework 2 (Виктор Фараздаги)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
ZFConf 2011: Что такое Sphinx, зачем он вообще нужен и как его использовать с...
ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
ZFConf 2011: Гибкая архитектура Zend Framework приложений с использованием De...
ZFConf 2011: Behavior Driven Development в PHP и Zend Framework (Константин К...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
ZFConf 2010: History of e-Shtab.ru
ZFConf 2010: Fotostrana.ru: Prototyping Project with Zend Framework
ZFConf 2010: Performance of Zend Framework Applications
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)

ZFConf 2010: Zend Framework and Doctrine