SlideShare a Scribd company logo
1 of 107
Download to read offline
ZF2 Code Generation
                           или почему лучше день потерять,
                              а потом за 5мин. долететь

Saturday, April 21, 2012
Об авторе
                                             Victor Farazdagi

               Phrozn - phrozn.info
                                               @farazdagi
               zftalk.dev - zfcasts.ru
                                                    /farazdagi
               Phing Contributor

               ZF Evangelist & Contributor



Saturday, April 21, 2012
Список литературы
                Skynet in ZF 2.0 Presentation by R. Schindler

                The Unbearable Stupidity of Modeling by P. Friese

                Ward’s Wiki aka PortlandPattern Repository,
                the World’s first wiki

                Code Generation in Action by J. Herrington

                DSLs by M. Fowler

                The Pragmatic Programmer by A. Hunt & D. Thomas

                MDA Explained by A. Kleppe, J. Warmer, W. Bast

Saturday, April 21, 2012
Структура доклада

              1. Определение концепции кодогенерации

              2. Обзор существующих инструментов

              3. Перспективы развития в ZF2

              4. Выводы (честная попытка их сделать)


Saturday, April 21, 2012
ОБП




Saturday, April 21, 2012
ОБП

                           В ZF1 нет адекватного инструментария




Saturday, April 21, 2012
ОБП

                           В ZF1 нет адекватного инструментария


                            В ZF2 нет готового инструментария




Saturday, April 21, 2012
ОБП

                           В ZF1 нет адекватного инструментария


                            В ZF2 нет готового инструментария




Saturday, April 21, 2012
ОБП

                           В ZF1 нет адекватного инструментария


                             В ZF2 нет готового инструментария




                           Адекватного инструментария нет вообще


Saturday, April 21, 2012
What??

                           Адекватного инструментария нет вообще




Saturday, April 21, 2012
What??

                           Адекватного инструментария нет вообще




Saturday, April 21, 2012
What??

                            Адекватного инструментария нет вообще




                           Bitch, Pleeease *


                 * Дадагой ддуг, Вы ошибаетес!

Saturday, April 21, 2012
What??

                            Адекватного инструментария нет вообще




                           Bitch, Pleeease *


                 * Дадагой ддуг, Вы ошибаетес!

Saturday, April 21, 2012
Что это за зверь такой -
                         Кодогенерация?
Saturday, April 21, 2012
Определение

       Кодогенерация - процесс преобразования высокоуровневого
          (более абстрактного) кода в низкоуровневый (менее
                           абстрактный) код.

          Процесс генерации кода обычно автоматизируют путем написания
             инструмента (Code Generator) для такого преобразования.


                            Абстрактное         Менее абстрактное
                           представление         представление


Saturday, April 21, 2012
Определение (прод.)

                     Кодогенерация - написание программ,
                      которые пишут другие программы.

                Исходный            Code
                                                 Выходной код
                   код            Generator




Saturday, April 21, 2012
Виды Генераторов Кода

                              Пассивные         Активные
                           Генераторы Кода   Генераторы Кода




Saturday, April 21, 2012
Виды Генераторов Кода

                              Пассивные         Активные
                           Генераторы Кода   Генераторы Кода


                              Save typing




Saturday, April 21, 2012
Виды Генераторов Кода

                              Пассивные         Активные
                           Генераторы Кода   Генераторы Кода


                              Save typing

                  Продвинутая шаблонизация




Saturday, April 21, 2012
Виды Генераторов Кода

                              Пассивные           Активные
                           Генераторы Кода     Генераторы Кода


                              Save typing

                  Продвинутая шаблонизация

                     Для создания артефактов




Saturday, April 21, 2012
Виды Генераторов Кода

                              Пассивные           Активные
                           Генераторы Кода     Генераторы Кода


                              Save typing

                  Продвинутая шаблонизация

                     Для создания артефактов

                             Design Smell


Saturday, April 21, 2012
Виды Генераторов Кода

                              Пассивные           Активные
                           Генераторы Кода     Генераторы Кода


                              Save typing           DRY

                  Продвинутая шаблонизация

                     Для создания артефактов

                             Design Smell


Saturday, April 21, 2012
Виды Генераторов Кода

                              Пассивные           Активные
                           Генераторы Кода     Генераторы Кода


                              Save typing              DRY

                  Продвинутая шаблонизация     Отлично работает с CI

                     Для создания артефактов

                             Design Smell


Saturday, April 21, 2012
Виды Генераторов Кода

                              Пассивные           Активные
                           Генераторы Кода     Генераторы Кода


                              Save typing              DRY

                  Продвинутая шаблонизация     Отлично работает с CI

                     Для создания артефактов   Дешевая (ре)генерация

                             Design Smell


Saturday, April 21, 2012
Почему это важно?




Saturday, April 21, 2012
Почему это важно?
                 Время программера -
                  главная ценность




Saturday, April 21, 2012
Почему это важно?
                 Время программера -
                  главная ценность
                                       Креативность




Saturday, April 21, 2012
Почему это важно?
                 Время программера -
                  главная ценность
                                         Креативность


                       Рутинные задачи




Saturday, April 21, 2012
Почему это важно?
                 Время программера -
                  главная ценность
                                           Креативность


                       Рутинные задачи



                           Кодогенерация



Saturday, April 21, 2012
Почему это важно?
                 Время программера -
                  главная ценность
                                           Креативность


                       Рутинные задачи
                                              Скука


                           Кодогенерация



Saturday, April 21, 2012
Почему это важно?
                 Время программера -
                  главная ценность
                                           Креативность


                       Рутинные задачи
                                              Скука


                           Кодогенерация



Saturday, April 21, 2012
Почему это важно?
                 Время программера -
                  главная ценность
                                           Креативность


                       Рутинные задачи
                                              Скука


                           Кодогенерация



Saturday, April 21, 2012
Почему это важно?
                 Время программера -
                  главная ценность
                                           Креативность


                       Рутинные задачи
                                              Скука


                           Кодогенерация



Saturday, April 21, 2012
Почему это важно?
                 Время программера -
                  главная ценность
                                           Креативность


                       Рутинные задачи
                                              Скука


                           Кодогенерация



Saturday, April 21, 2012
Почему это важно?
                 Время программера -
                  главная ценность
                                           Креативность


                       Рутинные задачи
                                              Скука


                           Кодогенерация



Saturday, April 21, 2012
Почему это важно?
                 Время программера -
                  главная ценность
                                           Креативность
                                                          ?
                       Рутинные задачи
                                              Скука


                           Кодогенерация



Saturday, April 21, 2012
Анатомия проекта




Saturday, April 21, 2012
Анатомия проекта

                                 Каркас
                           (ZF, Symfony, Yii)




Saturday, April 21, 2012
Анатомия проекта

                                  Каркас
                            (ZF, Symfony, Yii)




                                Батарейки
                           (Doctrine, Twig, Buzz
                                    etc)




Saturday, April 21, 2012
Анатомия проекта

                                            Каркас
                                      (ZF, Symfony, Yii)


                           Наш код


                                          Батарейки
                                     (Doctrine, Twig, Buzz
                                              etc)




Saturday, April 21, 2012
Анатомия проекта
                    Нетривиальный
                         код                 Каркас
                                       (ZF, Symfony, Yii)


                            Наш код


                                           Батарейки
                                      (Doctrine, Twig, Buzz
                                               etc)




Saturday, April 21, 2012
Анатомия проекта
                    Нетривиальный
                         код                             Каркас
                                                   (ZF, Symfony, Yii)


                                  Наш код

                           Рутинный/скучный код
                                                       Батарейки
                                                  (Doctrine, Twig, Buzz
                                                           etc)




Saturday, April 21, 2012
Качество кода
                           Generated code sucks!!!




Saturday, April 21, 2012
Качество кода
                                      Generated code sucks!!!




                           Дадагой ддуг....


Saturday, April 21, 2012
Качество кода

                           Generated code sucks!!!




                             Ты сам пишешь генератор кода.
                       Сгенерированный код будет настолько хорош,
                       насколько хорош созданный тобой генератор.




Saturday, April 21, 2012
Кодогенерация и DSL

                           DSL        DSL



                                 General Purpose
                           DSL
                                   Language




Saturday, April 21, 2012
DSLs + Code Generation




Saturday, April 21, 2012
Примеры
               Генерация сущностей

               Генерация форм из модели

               SASS, LESS (CSS compiling/transforming)

               JavaScript Generation

                     Оптимизация, преобразование, скаффолдинг

               Генерация промежуточного DSL

               тысячи их...

Saturday, April 21, 2012
Итак, что дает CG..




Saturday, April 21, 2012
Итак, что дает CG..




                           Качество / Quality



Saturday, April 21, 2012
Итак, что дает CG..




                           Согласованность / Consistency



                                Качество / Quality



Saturday, April 21, 2012
Итак, что дает CG..


                           Don’t Repeat Yourself (DRY)



                           Согласованность / Consistency



                                Качество / Quality



Saturday, April 21, 2012
Итак, что дает CG..

                               Скорость разработки



                           Don’t Repeat Yourself (DRY)



                           Согласованность / Consistency



                                Качество / Quality



Saturday, April 21, 2012
Резюмируя..



                           Work Harder




Saturday, April 21, 2012
Резюмируя..



                           Work Harder




Saturday, April 21, 2012
Резюмируя..



                           Work Harder   Work Smarter




Saturday, April 21, 2012
Обзор инструментов
Saturday, April 21, 2012
RoR 3
             Очень качественная реализация   Упор на пассивные генераторы



                     Экономят кучу времени
                                               Отличная расширяемость
                        Boilerplate code




Saturday, April 21, 2012
RoR 3
             Очень качественная реализация             Упор на пассивные генераторы



                     Экономят кучу времени
                                                         Отличная расширяемость
                        Boilerplate code




                  rails new                  rails generate               rake



Saturday, April 21, 2012
Django

                                                 У тебя есть инструменты для
                           Другая философия   простого решения задачи, но задачи
                                                (включая рутинные) ты будешь
                                                         решать сам.




Saturday, April 21, 2012
Django

                                                 У тебя есть инструменты для
                           Другая философия   простого решения задачи, но задачи
                                                (включая рутинные) ты будешь
                                                         решать сам.




                    Admin App




Saturday, April 21, 2012
Django

                                                    У тебя есть инструменты для
                           Другая философия      простого решения задачи, но задачи
                                                   (включая рутинные) ты будешь
                                                            решать сам.




                    Admin App                 Model Form




Saturday, April 21, 2012
Django

                                                    У тебя есть инструменты для
                           Другая философия      простого решения задачи, но задачи
                                                   (включая рутинные) ты будешь
                                                            решать сам.




                    Admin App                 Model Form         Generic Views




Saturday, April 21, 2012
Yii
                           yiic shell generators




                                Gii + giix




Saturday, April 21, 2012
Yii
                           yiic shell generators   генерация модели


                                                   CRUD/Scaffold




                                Gii + giix




Saturday, April 21, 2012
Yii
                           yiic shell generators       генерация модели


                                                        CRUD/Scaffold




                                Gii + giix         supersedes yiic generators



                                                   web-based code generation



Saturday, April 21, 2012
Symfony2



                           app/console




Saturday, April 21, 2012
Symfony2
                                          Создан на базе (замечательного)
                                               компонента Console


                                            Легко создавать расширения


                           app/console
                                          Отличная поддержка Doctrine2


                                           CRUD, Entities, Entity, Form


                                         Assets (styles, scripts) management


Saturday, April 21, 2012
CakePHP
                            cake bake       Good interactive shells


                                             Bakes Models, View,
                                           Controllers, Fixtures, UTs


                                         Генерация схемы для быстрого
                           cake schema
                                           (повторого) развертывания.



                            cake i18n       Генерация .pot файлов



Saturday, April 21, 2012
CodeIgniter2




Saturday, April 21, 2012
Кодогенерация в ZF1
Saturday, April 21, 2012
Zend_Tool_Framework

                                  Действительно целый фреймворк



                            Providers                 Manifest & MetaData



                           CLI Handling                     Loaders



                             Registry



Saturday, April 21, 2012
Zend_Tool_Framework

                                  Действительно целый фреймворк



                            Providers                 Manifest & MetaData



                           CLI Handling                     Loaders


                                                            Triumph of
                             Registry
                                                         over-engineering!

Saturday, April 21, 2012
Zend_Tool_Project
                           Куча провайдеров код которых будет использован


                  Project          Module    Controller    View      DbTable




Saturday, April 21, 2012
Zend_Tool_Project
                           Куча провайдеров код которых будет использован


                  Project           Module   Controller    View      DbTable




                              Context
                                                             Triumph of
                              Stateful                    over-engineering!


Saturday, April 21, 2012
Zend_Tool + zf.php
                               Фасад к ZendToolProjectProvider


                    Management taks: on/off layout, show version, db adapter etc


                           Model, View, Controller, Action, Module, Form


                                   zf action-name provider-name


                              Контекстная справка aka --help system


Saturday, April 21, 2012
Zend_CodeGenerator


             Генерация кода с использованием       Refactored to
                    ОО-интерфейсов.            ZendCodeGenerator



           Планировался как general-purpose     Good for what it is:
                   generator (SIC!!)           PHP code generation




Saturday, April 21, 2012
Zend_Reflection


                                                      Refactored to
                    Расширяет PHP Reflection
                                                  ZendCodeReflection




                           Интроспеция файлов   Анализ docblock-comments




Saturday, April 21, 2012
Кодогенерация в ZF2
Saturday, April 21, 2012
Текущее состояние




Saturday, April 21, 2012
Текущее состояние
                           ZendTool




Saturday, April 21, 2012
Текущее состояние
                           ZendTool




Saturday, April 21, 2012
Текущее состояние
                                           ZendTool


            ZendToolFrameworkSystemProvider


                           ZendToolProjectProvider




Saturday, April 21, 2012
Текущее состояние
                                           ZendTool


            ZendToolFrameworkSystemProvider
                                                        Zf2Tool
                                                        module
                           ZendToolProjectProvider




Saturday, April 21, 2012
Текущее состояние
                                           ZendTool


            ZendToolFrameworkSystemProvider
                                                               Zf2Tool
                                                               module
                           ZendToolProjectProvider




                           ZendConsole                 ZendCode


Saturday, April 21, 2012
ZendConsole

                           /Thinkscape/zf2/tree/feature/console


                           /Thinkscape/zf2-console-sandbox




Saturday, April 21, 2012
ZendConsole

                                     /Thinkscape/zf2/tree/feature/console


                                     /Thinkscape/zf2-console-sandbox



                           Routing           Requests           Adapters




Saturday, April 21, 2012
ZendCode
                    Zend_CodeGenerator



                           Zend_Reflection




Saturday, April 21, 2012
ZendCode
                    Zend_CodeGenerator



                           Zend_Reflection




Saturday, April 21, 2012
ZendCode
                    Zend_CodeGenerator      Reflection



                           Zend_Reflection




Saturday, April 21, 2012
ZendCode
                    Zend_CodeGenerator      Reflection



                           Zend_Reflection   Scanner




Saturday, April 21, 2012
ZendCode
                    Zend_CodeGenerator      Reflection



                           Zend_Reflection    Scanner



                                            Annotation




Saturday, April 21, 2012
ZendCode
                    Zend_CodeGenerator      Reflection



                           Zend_Reflection    Scanner



                                            Annotation



                                            Generator




Saturday, April 21, 2012
zf2.php tool
                               ??



Saturday, April 21, 2012
                           ?
zf2.php tool
                                                ??



                                            ?
                           RFC - Tool 2.0




Saturday, April 21, 2012
zf2.php tool
                                                             ??



                                                 ?
                           RFC - Tool 2.0   Будет активно обновляться




Saturday, April 21, 2012
zf2.php tool
                                                                  ??



                                                      ?
                           RFC - Tool 2.0        Будет активно обновляться



                   Tabled on last IRC meeting


                 Thread in ML - go, write your
                           opinion!!




Saturday, April 21, 2012
zf2.php tool
                                                                  ??



                                                      ?
                           RFC - Tool 2.0        Будет активно обновляться



                   Tabled on last IRC meeting
                                                   Ожидается дискуссия
                 Thread in ML - go, write your
                           opinion!!




Saturday, April 21, 2012
zf2.php tool
                                                                   ??



                                                       ?
                              RFC - Tool 2.0      Будет активно обновляться



                   Tabled on last IRC meeting
                                                    Ожидается дискуссия
                 Thread in ML - go, write your
                           opinion!!



                           Часть модуля Zf2Tool


Saturday, April 21, 2012
zf2.php tool
                                                                   ??



                                                       ?
                              RFC - Tool 2.0      Будет активно обновляться



                   Tabled on last IRC meeting
                                                    Ожидается дискуссия
                 Thread in ML - go, write your
                           opinion!!



                           Часть модуля Zf2Tool       How to package?


Saturday, April 21, 2012
Yada, yada
                           (closing thoughts)
Saturday, April 21, 2012
3 things to take home..




Saturday, April 21, 2012
3 things to take home..

                           Give the proper respect to hand-coding




Saturday, April 21, 2012
3 things to take home..

                             Give the proper respect to hand-coding



                           Don’t be afraid of automatic code generation




Saturday, April 21, 2012
3 things to take home..

                             Give the proper respect to hand-coding



                           Don’t be afraid of automatic code generation



                           Define and constantly improve your toolset



Saturday, April 21, 2012
И последнее:


          Contribute to ZF2
                                   /zendframework/zf2

                      +100 Karma     +100500 Skill   +100 FUN


Saturday, April 21, 2012
Thanks!
                           @farazdagi

                               /farazdagi



Saturday, April 21, 2012

More Related Content

Viewers also liked

Karen Barlow
Karen BarlowKaren Barlow
Karen Barlowbarloj1
 
Weather Lesson Plans
Weather Lesson PlansWeather Lesson Plans
Weather Lesson Plansndwolfe
 
Ryan Match Moving For Area Based Analysis Of Eye Movements In Natural Tasks
Ryan Match Moving For Area Based Analysis Of Eye Movements In Natural TasksRyan Match Moving For Area Based Analysis Of Eye Movements In Natural Tasks
Ryan Match Moving For Area Based Analysis Of Eye Movements In Natural TasksKalle
 
Uso racional de medicamentos
Uso racional de medicamentosUso racional de medicamentos
Uso racional de medicamentosMANUEL RIVERA
 
Coutinho A Depth Compensation Method For Cross Ratio Based Eye Tracking
Coutinho A Depth Compensation Method For Cross Ratio Based Eye TrackingCoutinho A Depth Compensation Method For Cross Ratio Based Eye Tracking
Coutinho A Depth Compensation Method For Cross Ratio Based Eye TrackingKalle
 
JudCon Brazil 2014 - Mobile push for all platforms
JudCon Brazil 2014 - Mobile push for all platformsJudCon Brazil 2014 - Mobile push for all platforms
JudCon Brazil 2014 - Mobile push for all platformsDaniel Passos
 
/Volumes/Rozwa1 Cl/Edu 290/Assignments/Cyberbullying
/Volumes/Rozwa1 Cl/Edu 290/Assignments/Cyberbullying/Volumes/Rozwa1 Cl/Edu 290/Assignments/Cyberbullying
/Volumes/Rozwa1 Cl/Edu 290/Assignments/CyberbullyingChrisRoz
 
Company Presentation
Company PresentationCompany Presentation
Company Presentationsdemey
 
Dit Is Mijn Lijf
Dit Is Mijn LijfDit Is Mijn Lijf
Dit Is Mijn Lijfguest2f17d3
 
Nagamatsu Gaze Estimation Method Based On An Aspherical Model Of The Cornea S...
Nagamatsu Gaze Estimation Method Based On An Aspherical Model Of The Cornea S...Nagamatsu Gaze Estimation Method Based On An Aspherical Model Of The Cornea S...
Nagamatsu Gaze Estimation Method Based On An Aspherical Model Of The Cornea S...Kalle
 
Faro An Interactive Interface For Remote Administration Of Clinical Tests Bas...
Faro An Interactive Interface For Remote Administration Of Clinical Tests Bas...Faro An Interactive Interface For Remote Administration Of Clinical Tests Bas...
Faro An Interactive Interface For Remote Administration Of Clinical Tests Bas...Kalle
 
חוות שבעה והכפר ראג גדעון ביגר
חוות שבעה והכפר ראג   גדעון ביגרחוות שבעה והכפר ראג   גדעון ביגר
חוות שבעה והכפר ראג גדעון ביגרhaimkarel
 
Album Covers Powerpoint
Album Covers   PowerpointAlbum Covers   Powerpoint
Album Covers Powerpointguest9e86f78
 
Klingner Fixation Aligned Pupillary Response Averaging
Klingner Fixation Aligned Pupillary Response AveragingKlingner Fixation Aligned Pupillary Response Averaging
Klingner Fixation Aligned Pupillary Response AveragingKalle
 

Viewers also liked (16)

Karen Barlow
Karen BarlowKaren Barlow
Karen Barlow
 
Weather Lesson Plans
Weather Lesson PlansWeather Lesson Plans
Weather Lesson Plans
 
Ryan Match Moving For Area Based Analysis Of Eye Movements In Natural Tasks
Ryan Match Moving For Area Based Analysis Of Eye Movements In Natural TasksRyan Match Moving For Area Based Analysis Of Eye Movements In Natural Tasks
Ryan Match Moving For Area Based Analysis Of Eye Movements In Natural Tasks
 
Uso racional de medicamentos
Uso racional de medicamentosUso racional de medicamentos
Uso racional de medicamentos
 
Coutinho A Depth Compensation Method For Cross Ratio Based Eye Tracking
Coutinho A Depth Compensation Method For Cross Ratio Based Eye TrackingCoutinho A Depth Compensation Method For Cross Ratio Based Eye Tracking
Coutinho A Depth Compensation Method For Cross Ratio Based Eye Tracking
 
JudCon Brazil 2014 - Mobile push for all platforms
JudCon Brazil 2014 - Mobile push for all platformsJudCon Brazil 2014 - Mobile push for all platforms
JudCon Brazil 2014 - Mobile push for all platforms
 
/Volumes/Rozwa1 Cl/Edu 290/Assignments/Cyberbullying
/Volumes/Rozwa1 Cl/Edu 290/Assignments/Cyberbullying/Volumes/Rozwa1 Cl/Edu 290/Assignments/Cyberbullying
/Volumes/Rozwa1 Cl/Edu 290/Assignments/Cyberbullying
 
Company Presentation
Company PresentationCompany Presentation
Company Presentation
 
Dit Is Mijn Lijf
Dit Is Mijn LijfDit Is Mijn Lijf
Dit Is Mijn Lijf
 
Nagamatsu Gaze Estimation Method Based On An Aspherical Model Of The Cornea S...
Nagamatsu Gaze Estimation Method Based On An Aspherical Model Of The Cornea S...Nagamatsu Gaze Estimation Method Based On An Aspherical Model Of The Cornea S...
Nagamatsu Gaze Estimation Method Based On An Aspherical Model Of The Cornea S...
 
Faro An Interactive Interface For Remote Administration Of Clinical Tests Bas...
Faro An Interactive Interface For Remote Administration Of Clinical Tests Bas...Faro An Interactive Interface For Remote Administration Of Clinical Tests Bas...
Faro An Interactive Interface For Remote Administration Of Clinical Tests Bas...
 
חוות שבעה והכפר ראג גדעון ביגר
חוות שבעה והכפר ראג   גדעון ביגרחוות שבעה והכפר ראג   גדעון ביגר
חוות שבעה והכפר ראג גדעון ביגר
 
Double routing
Double  routingDouble  routing
Double routing
 
Album Covers Powerpoint
Album Covers   PowerpointAlbum Covers   Powerpoint
Album Covers Powerpoint
 
Klingner Fixation Aligned Pupillary Response Averaging
Klingner Fixation Aligned Pupillary Response AveragingKlingner Fixation Aligned Pupillary Response Averaging
Klingner Fixation Aligned Pupillary Response Averaging
 
PBOPlus Introduction
PBOPlus IntroductionPBOPlus Introduction
PBOPlus Introduction
 

More from ZFConf Conference

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

More from ZFConf Conference (20)

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

ZFConf 2012: Code Generation и Scaffolding в Zend Framework 2 (Виктор Фараздаги)

  • 1. ZF2 Code Generation или почему лучше день потерять, а потом за 5мин. долететь Saturday, April 21, 2012
  • 2. Об авторе Victor Farazdagi Phrozn - phrozn.info @farazdagi zftalk.dev - zfcasts.ru /farazdagi Phing Contributor ZF Evangelist & Contributor Saturday, April 21, 2012
  • 3. Список литературы Skynet in ZF 2.0 Presentation by R. Schindler The Unbearable Stupidity of Modeling by P. Friese Ward’s Wiki aka PortlandPattern Repository, the World’s first wiki Code Generation in Action by J. Herrington DSLs by M. Fowler The Pragmatic Programmer by A. Hunt & D. Thomas MDA Explained by A. Kleppe, J. Warmer, W. Bast Saturday, April 21, 2012
  • 4. Структура доклада 1. Определение концепции кодогенерации 2. Обзор существующих инструментов 3. Перспективы развития в ZF2 4. Выводы (честная попытка их сделать) Saturday, April 21, 2012
  • 6. ОБП В ZF1 нет адекватного инструментария Saturday, April 21, 2012
  • 7. ОБП В ZF1 нет адекватного инструментария В ZF2 нет готового инструментария Saturday, April 21, 2012
  • 8. ОБП В ZF1 нет адекватного инструментария В ZF2 нет готового инструментария Saturday, April 21, 2012
  • 9. ОБП В ZF1 нет адекватного инструментария В ZF2 нет готового инструментария Адекватного инструментария нет вообще Saturday, April 21, 2012
  • 10. What?? Адекватного инструментария нет вообще Saturday, April 21, 2012
  • 11. What?? Адекватного инструментария нет вообще Saturday, April 21, 2012
  • 12. What?? Адекватного инструментария нет вообще Bitch, Pleeease * * Дадагой ддуг, Вы ошибаетес! Saturday, April 21, 2012
  • 13. What?? Адекватного инструментария нет вообще Bitch, Pleeease * * Дадагой ддуг, Вы ошибаетес! Saturday, April 21, 2012
  • 14. Что это за зверь такой - Кодогенерация? Saturday, April 21, 2012
  • 15. Определение Кодогенерация - процесс преобразования высокоуровневого (более абстрактного) кода в низкоуровневый (менее абстрактный) код. Процесс генерации кода обычно автоматизируют путем написания инструмента (Code Generator) для такого преобразования. Абстрактное Менее абстрактное представление представление Saturday, April 21, 2012
  • 16. Определение (прод.) Кодогенерация - написание программ, которые пишут другие программы. Исходный Code Выходной код код Generator Saturday, April 21, 2012
  • 17. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Saturday, April 21, 2012
  • 18. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Save typing Saturday, April 21, 2012
  • 19. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Save typing Продвинутая шаблонизация Saturday, April 21, 2012
  • 20. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Save typing Продвинутая шаблонизация Для создания артефактов Saturday, April 21, 2012
  • 21. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Save typing Продвинутая шаблонизация Для создания артефактов Design Smell Saturday, April 21, 2012
  • 22. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Save typing DRY Продвинутая шаблонизация Для создания артефактов Design Smell Saturday, April 21, 2012
  • 23. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Save typing DRY Продвинутая шаблонизация Отлично работает с CI Для создания артефактов Design Smell Saturday, April 21, 2012
  • 24. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Save typing DRY Продвинутая шаблонизация Отлично работает с CI Для создания артефактов Дешевая (ре)генерация Design Smell Saturday, April 21, 2012
  • 26. Почему это важно? Время программера - главная ценность Saturday, April 21, 2012
  • 27. Почему это важно? Время программера - главная ценность Креативность Saturday, April 21, 2012
  • 28. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи Saturday, April 21, 2012
  • 29. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи Кодогенерация Saturday, April 21, 2012
  • 30. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи Скука Кодогенерация Saturday, April 21, 2012
  • 31. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи Скука Кодогенерация Saturday, April 21, 2012
  • 32. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи Скука Кодогенерация Saturday, April 21, 2012
  • 33. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи Скука Кодогенерация Saturday, April 21, 2012
  • 34. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи Скука Кодогенерация Saturday, April 21, 2012
  • 35. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи Скука Кодогенерация Saturday, April 21, 2012
  • 36. Почему это важно? Время программера - главная ценность Креативность ? Рутинные задачи Скука Кодогенерация Saturday, April 21, 2012
  • 38. Анатомия проекта Каркас (ZF, Symfony, Yii) Saturday, April 21, 2012
  • 39. Анатомия проекта Каркас (ZF, Symfony, Yii) Батарейки (Doctrine, Twig, Buzz etc) Saturday, April 21, 2012
  • 40. Анатомия проекта Каркас (ZF, Symfony, Yii) Наш код Батарейки (Doctrine, Twig, Buzz etc) Saturday, April 21, 2012
  • 41. Анатомия проекта Нетривиальный код Каркас (ZF, Symfony, Yii) Наш код Батарейки (Doctrine, Twig, Buzz etc) Saturday, April 21, 2012
  • 42. Анатомия проекта Нетривиальный код Каркас (ZF, Symfony, Yii) Наш код Рутинный/скучный код Батарейки (Doctrine, Twig, Buzz etc) Saturday, April 21, 2012
  • 43. Качество кода Generated code sucks!!! Saturday, April 21, 2012
  • 44. Качество кода Generated code sucks!!! Дадагой ддуг.... Saturday, April 21, 2012
  • 45. Качество кода Generated code sucks!!! Ты сам пишешь генератор кода. Сгенерированный код будет настолько хорош, насколько хорош созданный тобой генератор. Saturday, April 21, 2012
  • 46. Кодогенерация и DSL DSL DSL General Purpose DSL Language Saturday, April 21, 2012
  • 47. DSLs + Code Generation Saturday, April 21, 2012
  • 48. Примеры Генерация сущностей Генерация форм из модели SASS, LESS (CSS compiling/transforming) JavaScript Generation Оптимизация, преобразование, скаффолдинг Генерация промежуточного DSL тысячи их... Saturday, April 21, 2012
  • 49. Итак, что дает CG.. Saturday, April 21, 2012
  • 50. Итак, что дает CG.. Качество / Quality Saturday, April 21, 2012
  • 51. Итак, что дает CG.. Согласованность / Consistency Качество / Quality Saturday, April 21, 2012
  • 52. Итак, что дает CG.. Don’t Repeat Yourself (DRY) Согласованность / Consistency Качество / Quality Saturday, April 21, 2012
  • 53. Итак, что дает CG.. Скорость разработки Don’t Repeat Yourself (DRY) Согласованность / Consistency Качество / Quality Saturday, April 21, 2012
  • 54. Резюмируя.. Work Harder Saturday, April 21, 2012
  • 55. Резюмируя.. Work Harder Saturday, April 21, 2012
  • 56. Резюмируя.. Work Harder Work Smarter Saturday, April 21, 2012
  • 58. RoR 3 Очень качественная реализация Упор на пассивные генераторы Экономят кучу времени Отличная расширяемость Boilerplate code Saturday, April 21, 2012
  • 59. RoR 3 Очень качественная реализация Упор на пассивные генераторы Экономят кучу времени Отличная расширяемость Boilerplate code rails new rails generate rake Saturday, April 21, 2012
  • 60. Django У тебя есть инструменты для Другая философия простого решения задачи, но задачи (включая рутинные) ты будешь решать сам. Saturday, April 21, 2012
  • 61. Django У тебя есть инструменты для Другая философия простого решения задачи, но задачи (включая рутинные) ты будешь решать сам. Admin App Saturday, April 21, 2012
  • 62. Django У тебя есть инструменты для Другая философия простого решения задачи, но задачи (включая рутинные) ты будешь решать сам. Admin App Model Form Saturday, April 21, 2012
  • 63. Django У тебя есть инструменты для Другая философия простого решения задачи, но задачи (включая рутинные) ты будешь решать сам. Admin App Model Form Generic Views Saturday, April 21, 2012
  • 64. Yii yiic shell generators Gii + giix Saturday, April 21, 2012
  • 65. Yii yiic shell generators генерация модели CRUD/Scaffold Gii + giix Saturday, April 21, 2012
  • 66. Yii yiic shell generators генерация модели CRUD/Scaffold Gii + giix supersedes yiic generators web-based code generation Saturday, April 21, 2012
  • 67. Symfony2 app/console Saturday, April 21, 2012
  • 68. Symfony2 Создан на базе (замечательного) компонента Console Легко создавать расширения app/console Отличная поддержка Doctrine2 CRUD, Entities, Entity, Form Assets (styles, scripts) management Saturday, April 21, 2012
  • 69. CakePHP cake bake Good interactive shells Bakes Models, View, Controllers, Fixtures, UTs Генерация схемы для быстрого cake schema (повторого) развертывания. cake i18n Генерация .pot файлов Saturday, April 21, 2012
  • 72. Zend_Tool_Framework Действительно целый фреймворк Providers Manifest & MetaData CLI Handling Loaders Registry Saturday, April 21, 2012
  • 73. Zend_Tool_Framework Действительно целый фреймворк Providers Manifest & MetaData CLI Handling Loaders Triumph of Registry over-engineering! Saturday, April 21, 2012
  • 74. Zend_Tool_Project Куча провайдеров код которых будет использован Project Module Controller View DbTable Saturday, April 21, 2012
  • 75. Zend_Tool_Project Куча провайдеров код которых будет использован Project Module Controller View DbTable Context Triumph of Stateful over-engineering! Saturday, April 21, 2012
  • 76. Zend_Tool + zf.php Фасад к ZendToolProjectProvider Management taks: on/off layout, show version, db adapter etc Model, View, Controller, Action, Module, Form zf action-name provider-name Контекстная справка aka --help system Saturday, April 21, 2012
  • 77. Zend_CodeGenerator Генерация кода с использованием Refactored to ОО-интерфейсов. ZendCodeGenerator Планировался как general-purpose Good for what it is: generator (SIC!!) PHP code generation Saturday, April 21, 2012
  • 78. Zend_Reflection Refactored to Расширяет PHP Reflection ZendCodeReflection Интроспеция файлов Анализ docblock-comments Saturday, April 21, 2012
  • 81. Текущее состояние ZendTool Saturday, April 21, 2012
  • 82. Текущее состояние ZendTool Saturday, April 21, 2012
  • 83. Текущее состояние ZendTool ZendToolFrameworkSystemProvider ZendToolProjectProvider Saturday, April 21, 2012
  • 84. Текущее состояние ZendTool ZendToolFrameworkSystemProvider Zf2Tool module ZendToolProjectProvider Saturday, April 21, 2012
  • 85. Текущее состояние ZendTool ZendToolFrameworkSystemProvider Zf2Tool module ZendToolProjectProvider ZendConsole ZendCode Saturday, April 21, 2012
  • 86. ZendConsole /Thinkscape/zf2/tree/feature/console /Thinkscape/zf2-console-sandbox Saturday, April 21, 2012
  • 87. ZendConsole /Thinkscape/zf2/tree/feature/console /Thinkscape/zf2-console-sandbox Routing Requests Adapters Saturday, April 21, 2012
  • 88. ZendCode Zend_CodeGenerator Zend_Reflection Saturday, April 21, 2012
  • 89. ZendCode Zend_CodeGenerator Zend_Reflection Saturday, April 21, 2012
  • 90. ZendCode Zend_CodeGenerator Reflection Zend_Reflection Saturday, April 21, 2012
  • 91. ZendCode Zend_CodeGenerator Reflection Zend_Reflection Scanner Saturday, April 21, 2012
  • 92. ZendCode Zend_CodeGenerator Reflection Zend_Reflection Scanner Annotation Saturday, April 21, 2012
  • 93. ZendCode Zend_CodeGenerator Reflection Zend_Reflection Scanner Annotation Generator Saturday, April 21, 2012
  • 94. zf2.php tool ?? Saturday, April 21, 2012 ?
  • 95. zf2.php tool ?? ? RFC - Tool 2.0 Saturday, April 21, 2012
  • 96. zf2.php tool ?? ? RFC - Tool 2.0 Будет активно обновляться Saturday, April 21, 2012
  • 97. zf2.php tool ?? ? RFC - Tool 2.0 Будет активно обновляться Tabled on last IRC meeting Thread in ML - go, write your opinion!! Saturday, April 21, 2012
  • 98. zf2.php tool ?? ? RFC - Tool 2.0 Будет активно обновляться Tabled on last IRC meeting Ожидается дискуссия Thread in ML - go, write your opinion!! Saturday, April 21, 2012
  • 99. zf2.php tool ?? ? RFC - Tool 2.0 Будет активно обновляться Tabled on last IRC meeting Ожидается дискуссия Thread in ML - go, write your opinion!! Часть модуля Zf2Tool Saturday, April 21, 2012
  • 100. zf2.php tool ?? ? RFC - Tool 2.0 Будет активно обновляться Tabled on last IRC meeting Ожидается дискуссия Thread in ML - go, write your opinion!! Часть модуля Zf2Tool How to package? Saturday, April 21, 2012
  • 101. Yada, yada (closing thoughts) Saturday, April 21, 2012
  • 102. 3 things to take home.. Saturday, April 21, 2012
  • 103. 3 things to take home.. Give the proper respect to hand-coding Saturday, April 21, 2012
  • 104. 3 things to take home.. Give the proper respect to hand-coding Don’t be afraid of automatic code generation Saturday, April 21, 2012
  • 105. 3 things to take home.. Give the proper respect to hand-coding Don’t be afraid of automatic code generation Define and constantly improve your toolset Saturday, April 21, 2012
  • 106. И последнее: Contribute to ZF2 /zendframework/zf2 +100 Karma +100500 Skill +100 FUN Saturday, April 21, 2012
  • 107. Thanks! @farazdagi /farazdagi Saturday, April 21, 2012