Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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

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

More Related Content

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/ • sam@rmcreative.ru • Принимаются – Отзывы – Идеи – Предложения