Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Как разрабатывается фреймворк                    Yii       Александр Макаров, Yii core team
Что такое Yii?   PHP5 MVC фреймворк.               Свой ActiveRecord.   Лѐгкий и быстрый.                 i18n на осно...
Типичный actionpublic function actionView($id){       $post = Post::model()->findByPk($id);       if(!$post)              ...
Более сложный Active Record$posts = Post::model()->taggedWith(array(yii,DevConf, PHP))->published()->with(comments)->findA...
Откуда такое название?!• Yes It Is (2010).• Easy Efficient Extensible (2009).• Китайский символ Yi:   –   Лѐгкость и прост...
Зачем велосипед и почему MVC?•   Во времена Prado не было нормальной альтернативы.•   Prado заимствовал у ASP.NET. Чужерод...
Иногда велосипед — это       хорошо!
Заимствование• Стоит ли смотреть на других?• Бездумное копирование — дело  гиблое.• Анализ необходим.                     ...
Кто «владелец» фреймворка?        Сообщество                     Компания Фреймворк не               × Заинтересована в п...
Почему BSD?•   Фреймворк — инструмент.•   Чтобы код «жил» его должны серьѐзно использовать.•   Серьѐзно = для получения пр...
Сообщество              Yii                        В общем• Оттянул на себя часть        • Интересные уникальные  сообщест...
Команда Yii• 6 разработчиков.              • Количество разработчиков• Технический писатель.           не растѐт т.к. рост...
Use the force and read the source!
Нет уж, спасибо!
Документация• Код без документации — мусор.• Успешность проекта сильно зависит от  документации.• Пишем код — обновляем  д...
Почему код должен быть приятным?• Чтобы проект доставлял разработчику не меньше удовольствия,  чем пользователям.• Чтобы н...
Каким должен быть API?• Согласованный. Всѐ в одном стиле.• Не сложный. Сложность = много всего.   – Магия, если она есть, ...
Готового идеала нет• В больших проектах всегда приходится что-то подпиливать.   – Как потом обновлять?   – Как ничего не с...
Версии и обратная совместимость1.1.x — обратно совместимые релизы.    – Небольшие документированные изменения.    – Новые ...
Поддержка старых версий           Проект                         Фреймворк• Делается не один месяц, за    • Поддерживать в...
Инструментарий• «Одноразовую» миграцию данных в большинстве случаев  приходится делать много раз.• Код надо тестировать.• ...
Производительность и оптимизация• Yii быстрый т.к. загружается только то, что нужно.  Используется SPL __autoload.• Не под...
Yii — это хорошо!
Спасибо•   http://yiiframework.com/•   http://yiiframework.ru/•   http://rmcreative.ru/•   sam@rmcreative.ru• Принимаются ...
Upcoming SlideShare
Loading in …5
×

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

6,595 views

Published on

Как разрабатывается фреймворк Yii
Александр Макаров, Yii core team

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Как разрабатывается фреймворк Yii Александр Макаров, Yii core team
  2. 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. 3. Типичный actionpublic function actionView($id){ $post = Post::model()->findByPk($id); if(!$post) throw new CHttpException(404); $this->render(view, array( post => $post, ));}
  4. 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. 5. Откуда такое название?!• Yes It Is (2010).• Easy Efficient Extensible (2009).• Китайский символ Yi: – Лѐгкость и простота. – Изменчивость и гибкость. – Постоянство. Главные принципы не меняются. ―Yi ching‖, ―Книга перемен‖.
  6. 6. Зачем велосипед и почему MVC?• Во времена Prado не было нормальной альтернативы.• Prado заимствовал у ASP.NET. Чужеродно.• MVC популярен и удобен.• Существующие в 2008-м году фреймворки не устраивали.
  7. 7. Иногда велосипед — это хорошо!
  8. 8. Заимствование• Стоит ли смотреть на других?• Бездумное копирование — дело гиблое.• Анализ необходим. ?
  9. 9. Кто «владелец» фреймворка? Сообщество Компания Фреймворк не × Заинтересована в получении подпиливается под прибыли. конкретные проекты. × Фреймворк часто является Заинтересовано в побочным продуктом оттачивании инструмента. проектов компании. Готово к обсуждениям. × Работает за деньги. Работает на репутацию. × Часто откладывает принятие Принимает решения решений. относительно быстро.
  10. 10. Почему BSD?• Фреймворк — инструмент.• Чтобы код «жил» его должны серьѐзно использовать.• Серьѐзно = для получения прибыли.• BSD не ограничивает коммерческое использование.
  11. 11. Сообщество Yii В общем• Оттянул на себя часть • Интересные уникальные сообщества Prado решения, рецепты• Не превратиться в helpdesk • Собрать лояльное ядро• Повторяющиеся вопросы → • Обучить на личном примере, wiki, поиск что для сообщества хорошо• Мало пишут — не всегда • Оставить шанс показать себя плохо
  12. 12. Команда Yii• 6 разработчиков. • Количество разработчиков• Технический писатель. не растѐт т.к. рост означает:• ~50 переводчиков. – Больше времени на общение, меньше на код. – Возможные конфликты.• Приоритеты: – Стабильность кода. – Надѐжность кода. – Единый стиль.
  13. 13. Use the force and read the source!
  14. 14. Нет уж, спасибо!
  15. 15. Документация• Код без документации — мусор.• Успешность проекта сильно зависит от документации.• Пишем код — обновляем документацию.• Всегда сразу документируем методы, классы и свойства.• Важны примеры, но слишком много примеров — тоже плохо.
  16. 16. Почему код должен быть приятным?• Чтобы проект доставлял разработчику не меньше удовольствия, чем пользователям.• Чтобы не тратить неоправданно много времени на документацию.• Деньги, время, мотивация.
  17. 17. Каким должен быть API?• Согласованный. Всѐ в одном стиле.• Не сложный. Сложность = много всего. – Магия, если она есть, должна обязательно быть однозначной и, по возможности, простой.• Гибкий. Легко поменять поведение.• Документированный.• Гибкость vs простота. – Крайности. God object.• Решение: фасад для скрытия деталей, адаптер для выравнивания API.
  18. 18. Готового идеала нет• В больших проектах всегда приходится что-то подпиливать. – Как потом обновлять? – Как ничего не сломать?• В фреймворк нельзя встроить всѐ. – Надо ещѐ и сторонний код пилить? – А вдруг не заработает?
  19. 19. Версии и обратная совместимость1.1.x — обратно совместимые релизы. – Небольшие документированные изменения. – Новые возможности. – Подходит для обновления уже начатых проектов.1.x.0 — частичная несовместимость. – Обновить проект возможно, но затратно.x.0.0 — более свежие возможности без оглядки на обратнуюсовместимость.
  20. 20. Поддержка старых версий Проект Фреймворк• Делается не один месяц, за • Поддерживать все старые это время выходит обратно версии нереально → несовместимая версия. ограничиваем время• Немедленное адаптирование поддержки. под неѐ — потеря времени и • Не перетаскиваем новые денег. возможности в старые• Возможно, стоит версии. Исправляем ошибки. остановиться, но как быть с багами в фреймворке?
  21. 21. Инструментарий• «Одноразовую» миграцию данных в большинстве случаев приходится делать много раз.• Код надо тестировать.• Однотипный код писать лень.• IDE должны поддерживать код.• Отладка — это важно.
  22. 22. Производительность и оптимизация• Yii быстрый т.к. загружается только то, что нужно. Используется SPL __autoload.• Не подключаемся к БД, пока не понадобится, не парсим запрос пока не потребуют и т.д.• Если код используется часто и много — производительность важнее фич.• Если используется редко — производительность не так важна.
  23. 23. Yii — это хорошо!
  24. 24. Спасибо• http://yiiframework.com/• http://yiiframework.ru/• http://rmcreative.ru/• sam@rmcreative.ru• Принимаются – Отзывы – Идеи – Предложения

×