SlideShare a Scribd company logo
Как разрабатывается фреймворк
                    Yii
       Александр Макаров, Yii core team
Что такое Yii?

   PHP5 MVC фреймворк.               Свой ActiveRecord.
   Лѐгкий и быстрый.                 i18n на основе CLDR.
   Мощный и гибкий.                  Кэш с зависимостями и кучей
   Красивый API.                      бэкэндов.
   Пересекается с Prado, Rails,      RBAC.
    Symfony и… Joomla (в              Консоль.
    хорошем смысле).                  Генератор кода.
                                      …

        Prado (2004) → Yii 1.0 (2008) → Yii 1.1 (2010) → Yii2 (?)
Типичный action

public function actionView($id)
{
       $post = Post::model()->findByPk($id);
       if(!$post)
              throw new CHttpException(404);

      $this->render('view', array(
             'post' => $post,
      ));
}
Более сложный Active Record

$posts = Post::model()->taggedWith(array('yii',
'DevConf', 'PHP'))->published()->with('comments')-
>findAll();

foreach($posts as $post){
    echo $post->title;
    foreach($post->comments as $comment){
        echo $comment->text;
    }
}
Откуда такое название?!

• Yes It Is (2010).
• Easy Efficient Extensible (2009).
• Китайский символ Yi:
   –   Лѐгкость и простота.
   –   Изменчивость и гибкость.
   –   Постоянство. Главные принципы не меняются.



                                           ―Yi ching‖, ―Книга перемен‖.
Зачем велосипед и почему MVC?

•   Во времена Prado не было нормальной альтернативы.
•   Prado заимствовал у ASP.NET. Чужеродно.
•   MVC популярен и удобен.
•   Существующие в 2008-м году фреймворки не устраивали.
Иногда велосипед — это
       хорошо!
Заимствование

• Стоит ли смотреть на других?
• Бездумное копирование — дело
  гиблое.
• Анализ необходим.


                                 ?
Кто «владелец» фреймворка?
        Сообщество                     Компания

 Фреймворк не               × Заинтересована в получении
  подпиливается под            прибыли.
  конкретные проекты.        × Фреймворк часто является
 Заинтересовано в             побочным продуктом
  оттачивании инструмента.     проектов компании.
 Готово к обсуждениям.      × Работает за деньги.
 Работает на репутацию.     × Часто откладывает принятие
 Принимает решения            решений.
  относительно быстро.
Почему BSD?

•   Фреймворк — инструмент.
•   Чтобы код «жил» его должны серьѐзно использовать.
•   Серьѐзно = для получения прибыли.
•   BSD не ограничивает коммерческое использование.
Сообщество

              Yii                        В общем


• Оттянул на себя часть        • Интересные уникальные
  сообщества Prado               решения, рецепты
• Не превратиться в helpdesk   • Собрать лояльное ядро
• Повторяющиеся вопросы →      • Обучить на личном примере,
  wiki, поиск                    что для сообщества хорошо
• Мало пишут — не всегда       • Оставить шанс показать себя
  плохо
Команда Yii
• 6 разработчиков.              • Количество разработчиков
• Технический писатель.           не растѐт т.к. рост означает:
• ~50 переводчиков.                – Больше времени на
                                     общение, меньше на код.
                                   – Возможные конфликты.
• Приоритеты:
   – Стабильность кода.
   – Надѐжность кода.
   – Единый стиль.
Use the force and read the source!
Нет уж, спасибо!
Документация

• Код без документации — мусор.
• Успешность проекта сильно зависит от
  документации.
• Пишем код — обновляем
  документацию.
• Всегда сразу документируем методы,
  классы и свойства.
• Важны примеры, но слишком много
  примеров — тоже плохо.
Почему код должен быть приятным?

• Чтобы проект доставлял разработчику не меньше удовольствия,
  чем пользователям.
• Чтобы не тратить неоправданно много времени на
  документацию.

• Деньги, время, мотивация.
Каким должен быть API?
• Согласованный. Всѐ в одном стиле.
• Не сложный. Сложность = много всего.
   – Магия, если она есть, должна обязательно быть
     однозначной и, по возможности, простой.
• Гибкий. Легко поменять поведение.
• Документированный.

• Гибкость vs простота.
   – Крайности. God object.
• Решение: фасад для скрытия деталей, адаптер для
  выравнивания API.
Готового идеала нет

• В больших проектах всегда приходится что-то подпиливать.
   – Как потом обновлять?
   – Как ничего не сломать?
• В фреймворк нельзя встроить всѐ.
   – Надо ещѐ и сторонний код пилить?
   – А вдруг не заработает?
Версии и обратная совместимость

1.1.x — обратно совместимые релизы.
    – Небольшие документированные изменения.
    – Новые возможности.
    – Подходит для обновления уже начатых проектов.
1.x.0 — частичная несовместимость.
    – Обновить проект возможно, но затратно.
x.0.0 — более свежие возможности без оглядки на обратную
совместимость.
Поддержка старых версий
           Проект                         Фреймворк


• Делается не один месяц, за    • Поддерживать все старые
  это время выходит обратно       версии нереально →
  несовместимая версия.           ограничиваем время
• Немедленное адаптирование       поддержки.
  под неѐ — потеря времени и    • Не перетаскиваем новые
  денег.                          возможности в старые
• Возможно, стоит                 версии. Исправляем ошибки.
  остановиться, но как быть с
  багами в фреймворке?
Инструментарий

• «Одноразовую» миграцию данных в большинстве случаев
  приходится делать много раз.
• Код надо тестировать.
• Однотипный код писать лень.
• IDE должны поддерживать код.
• Отладка — это важно.
Производительность и оптимизация

• Yii быстрый т.к. загружается только то, что нужно.
  Используется SPL __autoload.
• Не подключаемся к БД, пока не понадобится, не парсим запрос
  пока не потребуют и т.д.
• Если код используется часто и много — производительность
  важнее фич.
• Если используется редко — производительность не так важна.
Yii — это хорошо!
Спасибо

•   http://yiiframework.com/
•   http://yiiframework.ru/
•   http://rmcreative.ru/
•   sam@rmcreative.ru

• Принимаются
   – Отзывы
   – Идеи
   – Предложения
Ad

Recommended

PDF
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest
 
PDF
Как разраба
Alexander Makarov
 
PPTX
Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (St...
Ontico
 
PDF
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
ScrumTrek
 
PDF
Быстрое расширение Robot Framework под свои нужды с использованием Python
automated-testing.info
 
PDF
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
Ontico
 
PPTX
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)
Ontico
 
PDF
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
ScrumTrek
 
PPTX
Как мы делаем Banki.ru
Roman Ivliev
 
PDF
Алексей Лустин. Непрерывная проверка качества кода.
ScrumTrek
 
PPTX
О фреймворках Backend conf 2016
Roman Ivliev
 
PPTX
Всему своё время Highload Junior 2016
Roman Ivliev
 
PDF
UWDC'12, Александр Макаров, О командной разработке и фреймворках
Alexander Makarov
 
PDF
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Ontico
 
PPTX
Какой фреймворк нам нужен для Web? Денис Цыплаков
Alex Tumanoff
 
PPTX
мир без Jsp. thymeleaf 2.0
Alexey (Mr_Mig) Migutsky
 
PDF
Junior java standard edition developer
Dmitriy Neguritsa
 
PDF
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
Yandex
 
PPTX
Как писать на PHP и не стать быдло-кодером
Kirill Kovalchuk
 
PPTX
встать на рельсы
Roman Lemekha
 
PDF
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
ScrumTrek
 
PDF
Илья Климов - Reason: маргиналы против хайпа
FDConf
 
PPTX
Creating Open Source Projects
Alexei Yuzhakov
 
PDF
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Anthony Marchenko
 
PDF
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живых
automated-testing.info
 
PDF
Дмитрий Кушников — БЭМ глазами бэкенд-разработчика
Yandex
 
PDF
инструменты проектирования интерфейсов
Oleg Karapuzov
 
PPTX
Как воспитать программиста
Mikhail Payson
 
ODP
александр макаров Yii Rit 2010
rit2010
 
PPT
Yii rit 2010
Alexander Makarov
 

More Related Content

What's hot (20)

PPTX
Как мы делаем Banki.ru
Roman Ivliev
 
PDF
Алексей Лустин. Непрерывная проверка качества кода.
ScrumTrek
 
PPTX
О фреймворках Backend conf 2016
Roman Ivliev
 
PPTX
Всему своё время Highload Junior 2016
Roman Ivliev
 
PDF
UWDC'12, Александр Макаров, О командной разработке и фреймворках
Alexander Makarov
 
PDF
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Ontico
 
PPTX
Какой фреймворк нам нужен для Web? Денис Цыплаков
Alex Tumanoff
 
PPTX
мир без Jsp. thymeleaf 2.0
Alexey (Mr_Mig) Migutsky
 
PDF
Junior java standard edition developer
Dmitriy Neguritsa
 
PDF
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
Yandex
 
PPTX
Как писать на PHP и не стать быдло-кодером
Kirill Kovalchuk
 
PPTX
встать на рельсы
Roman Lemekha
 
PDF
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
ScrumTrek
 
PDF
Илья Климов - Reason: маргиналы против хайпа
FDConf
 
PPTX
Creating Open Source Projects
Alexei Yuzhakov
 
PDF
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Anthony Marchenko
 
PDF
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живых
automated-testing.info
 
PDF
Дмитрий Кушников — БЭМ глазами бэкенд-разработчика
Yandex
 
PDF
инструменты проектирования интерфейсов
Oleg Karapuzov
 
PPTX
Как воспитать программиста
Mikhail Payson
 
Как мы делаем Banki.ru
Roman Ivliev
 
Алексей Лустин. Непрерывная проверка качества кода.
ScrumTrek
 
О фреймворках Backend conf 2016
Roman Ivliev
 
Всему своё время Highload Junior 2016
Roman Ivliev
 
UWDC'12, Александр Макаров, О командной разработке и фреймворках
Alexander Makarov
 
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Ontico
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Alex Tumanoff
 
мир без Jsp. thymeleaf 2.0
Alexey (Mr_Mig) Migutsky
 
Junior java standard edition developer
Dmitriy Neguritsa
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
Yandex
 
Как писать на PHP и не стать быдло-кодером
Kirill Kovalchuk
 
встать на рельсы
Roman Lemekha
 
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
ScrumTrek
 
Илья Климов - Reason: маргиналы против хайпа
FDConf
 
Creating Open Source Projects
Alexei Yuzhakov
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Anthony Marchenko
 
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живых
automated-testing.info
 
Дмитрий Кушников — БЭМ глазами бэкенд-разработчика
Yandex
 
инструменты проектирования интерфейсов
Oleg Karapuzov
 
Как воспитать программиста
Mikhail Payson
 

Similar to Devconf 2011 - PHP - Как разрабатывается фреймворк Yii (20)

ODP
александр макаров Yii Rit 2010
rit2010
 
PPT
Yii rit 2010
Alexander Makarov
 
PDF
UWDC 2013, Как мы используем Yii
Alexander Makarov
 
ODP
Alexandr Makarov - PHP framework Yii
Arvids Godjuks
 
ODP
Yii PHP framework: basics, techniques and some inside info
seleckis
 
PPTX
«Особенности Agile-разработки интернет-проектов»
DataArt
 
PDF
UWDC 2013, Yii2
Alexander Makarov
 
PDF
UWDC'12, Александр Макаров, Yii, его разработка и Yii2
Alexander Makarov
 
PDF
О фреймворках / Роман Ивлиев (Банки.ру)
Ontico
 
ODP
Выбираем PHP-фреймворк. Особенности разработки с фреймворками
Alexander Makarov
 
PDF
Разработка веб-сервисов осень 2013 лекция 8
Technopark
 
PDF
терминология vol.2
SBTech
 
PPTX
Большие проекты, архитектура и фреймворки.
EatDog
 
PPTX
Php and frameworks
Alexandr Drobyshevsky
 
PDF
DevConf 2012 - Yii, его разработка и Yii2
Alexander Makarov
 
PDF
Ф'Yii'лософия
Paul Klimov
 
PPTX
Little Service in 2h
Alexei Yuzhakov
 
PDF
WordPress как фреймворк для создания сложных систем
Anatoly Yumashev
 
PPT
Общая архитектура Yii2
Paul Klimov
 
KEY
Web application framework
Viktor Chukhantsev
 
александр макаров Yii Rit 2010
rit2010
 
Yii rit 2010
Alexander Makarov
 
UWDC 2013, Как мы используем Yii
Alexander Makarov
 
Alexandr Makarov - PHP framework Yii
Arvids Godjuks
 
Yii PHP framework: basics, techniques and some inside info
seleckis
 
«Особенности Agile-разработки интернет-проектов»
DataArt
 
UWDC 2013, Yii2
Alexander Makarov
 
UWDC'12, Александр Макаров, Yii, его разработка и Yii2
Alexander Makarov
 
О фреймворках / Роман Ивлиев (Банки.ру)
Ontico
 
Выбираем PHP-фреймворк. Особенности разработки с фреймворками
Alexander Makarov
 
Разработка веб-сервисов осень 2013 лекция 8
Technopark
 
терминология vol.2
SBTech
 
Большие проекты, архитектура и фреймворки.
EatDog
 
Php and frameworks
Alexandr Drobyshevsky
 
DevConf 2012 - Yii, его разработка и Yii2
Alexander Makarov
 
Ф'Yii'лософия
Paul Klimov
 
Little Service in 2h
Alexei Yuzhakov
 
WordPress как фреймворк для создания сложных систем
Anatoly Yumashev
 
Общая архитектура Yii2
Paul Klimov
 
Web application framework
Viktor Chukhantsev
 
Ad

Devconf 2011 - PHP - Как разрабатывается фреймворк Yii

  • 1. Как разрабатывается фреймворк Yii Александр Макаров, Yii core team
  • 2. Что такое Yii?  PHP5 MVC фреймворк.  Свой ActiveRecord.  Лѐгкий и быстрый.  i18n на основе CLDR.  Мощный и гибкий.  Кэш с зависимостями и кучей  Красивый API. бэкэндов.  Пересекается с Prado, Rails,  RBAC. Symfony и… Joomla (в  Консоль. хорошем смысле).  Генератор кода.  … Prado (2004) → Yii 1.0 (2008) → Yii 1.1 (2010) → Yii2 (?)
  • 3. Типичный action public function actionView($id) { $post = Post::model()->findByPk($id); if(!$post) throw new CHttpException(404); $this->render('view', array( 'post' => $post, )); }
  • 4. Более сложный Active Record $posts = Post::model()->taggedWith(array('yii', 'DevConf', 'PHP'))->published()->with('comments')- >findAll(); foreach($posts as $post){ echo $post->title; foreach($post->comments as $comment){ echo $comment->text; } }
  • 5. Откуда такое название?! • Yes It Is (2010). • Easy Efficient Extensible (2009). • Китайский символ Yi: – Лѐгкость и простота. – Изменчивость и гибкость. – Постоянство. Главные принципы не меняются. ―Yi ching‖, ―Книга перемен‖.
  • 6. Зачем велосипед и почему MVC? • Во времена Prado не было нормальной альтернативы. • Prado заимствовал у ASP.NET. Чужеродно. • MVC популярен и удобен. • Существующие в 2008-м году фреймворки не устраивали.
  • 7. Иногда велосипед — это хорошо!
  • 8. Заимствование • Стоит ли смотреть на других? • Бездумное копирование — дело гиблое. • Анализ необходим. ?
  • 9. Кто «владелец» фреймворка? Сообщество Компания  Фреймворк не × Заинтересована в получении подпиливается под прибыли. конкретные проекты. × Фреймворк часто является  Заинтересовано в побочным продуктом оттачивании инструмента. проектов компании.  Готово к обсуждениям. × Работает за деньги.  Работает на репутацию. × Часто откладывает принятие  Принимает решения решений. относительно быстро.
  • 10. Почему BSD? • Фреймворк — инструмент. • Чтобы код «жил» его должны серьѐзно использовать. • Серьѐзно = для получения прибыли. • BSD не ограничивает коммерческое использование.
  • 11. Сообщество Yii В общем • Оттянул на себя часть • Интересные уникальные сообщества Prado решения, рецепты • Не превратиться в helpdesk • Собрать лояльное ядро • Повторяющиеся вопросы → • Обучить на личном примере, wiki, поиск что для сообщества хорошо • Мало пишут — не всегда • Оставить шанс показать себя плохо
  • 12. Команда Yii • 6 разработчиков. • Количество разработчиков • Технический писатель. не растѐт т.к. рост означает: • ~50 переводчиков. – Больше времени на общение, меньше на код. – Возможные конфликты. • Приоритеты: – Стабильность кода. – Надѐжность кода. – Единый стиль.
  • 13. Use the force and read the source!
  • 15. Документация • Код без документации — мусор. • Успешность проекта сильно зависит от документации. • Пишем код — обновляем документацию. • Всегда сразу документируем методы, классы и свойства. • Важны примеры, но слишком много примеров — тоже плохо.
  • 16. Почему код должен быть приятным? • Чтобы проект доставлял разработчику не меньше удовольствия, чем пользователям. • Чтобы не тратить неоправданно много времени на документацию. • Деньги, время, мотивация.
  • 17. Каким должен быть API? • Согласованный. Всѐ в одном стиле. • Не сложный. Сложность = много всего. – Магия, если она есть, должна обязательно быть однозначной и, по возможности, простой. • Гибкий. Легко поменять поведение. • Документированный. • Гибкость vs простота. – Крайности. God object. • Решение: фасад для скрытия деталей, адаптер для выравнивания API.
  • 18. Готового идеала нет • В больших проектах всегда приходится что-то подпиливать. – Как потом обновлять? – Как ничего не сломать? • В фреймворк нельзя встроить всѐ. – Надо ещѐ и сторонний код пилить? – А вдруг не заработает?
  • 19. Версии и обратная совместимость 1.1.x — обратно совместимые релизы. – Небольшие документированные изменения. – Новые возможности. – Подходит для обновления уже начатых проектов. 1.x.0 — частичная несовместимость. – Обновить проект возможно, но затратно. x.0.0 — более свежие возможности без оглядки на обратную совместимость.
  • 20. Поддержка старых версий Проект Фреймворк • Делается не один месяц, за • Поддерживать все старые это время выходит обратно версии нереально → несовместимая версия. ограничиваем время • Немедленное адаптирование поддержки. под неѐ — потеря времени и • Не перетаскиваем новые денег. возможности в старые • Возможно, стоит версии. Исправляем ошибки. остановиться, но как быть с багами в фреймворке?
  • 21. Инструментарий • «Одноразовую» миграцию данных в большинстве случаев приходится делать много раз. • Код надо тестировать. • Однотипный код писать лень. • IDE должны поддерживать код. • Отладка — это важно.
  • 22. Производительность и оптимизация • Yii быстрый т.к. загружается только то, что нужно. Используется SPL __autoload. • Не подключаемся к БД, пока не понадобится, не парсим запрос пока не потребуют и т.д. • Если код используется часто и много — производительность важнее фич. • Если используется редко — производительность не так важна.
  • 23. Yii — это хорошо!
  • 24. Спасибо • http://yiiframework.com/ • http://yiiframework.ru/ • http://rmcreative.ru/ • [email protected] • Принимаются – Отзывы – Идеи – Предложения