SlideShare a Scribd company logo
Как разрабатывается




        Макаров Александр
              Yii core team
Что такое Yii?
PHP5 MVC фреймворк.        Свой Active Record.
Лёгкий и быстрый.          I18n на основе CLDR.
Мощный и гибкий.           Кэш с зависимостями
Красивый API.              и кучей бэкэндов.
Пересекае                  RBAC.
тся с Prado,               Консоль.
Rails, Symfony и           Генератор кода.
Joomla.                    …

   Prado, с 2004 → Yii 1.0, 2008 → Yii 1.1, 2010
Типичный action
public function actionView($id)
{
       $post = Post::model()->findByPk($id);
       if(!$post)
              throw new CHttpException(404);

      $this->render('view', array(
             'post' => $post,
      ));
}
И немного AR посложнее
$posts = Post::model() ->taggedWith(array('yii',
'CodeFest'))->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 году фреймворки не
  устраивали.
Иногда велосипед — это
       хорошо!
Заимствование
• Стоит ли смотреть на других?
• Заимствование идей в неизменном виде.




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

• Acquia, Lullabot (Drupal)
• Percona (MySQL)
• Zabbix
Почему BSD?
• Фреймворк — инструмент.
• Чтобы код «жил» его должны серьёзно
  использовать.
• Серьёзно = для получения прибыли.
• BSD не ограничивает коммерческое
  использование.
Сообщество
Yii                        В общем
• Оттянул на себя часть    • Интересные уникальные
  сообщества Prado           решения, рецепты
• Не превратиться в        • Собрать лояльное ядро
  helpdesk                 • Обучить на личном
• Повторяющиеся вопросы      примере, что для
  → wiki, поиск              сообщества хорошо
• Мало пишут — не всегда   • Оставить шанс показать
  плохо                      себя
Новые предложения


                 Необходимо?


 Типично?



Обсуждение



             Реализация
«Ну и что... Это ситуация когда
количество параметров меньше и
  тут все OK. А ситуация с зомби
          совсем другая»
Команда Yii
• 6 разработчиков.        • Количество
• Технический писатель.     разработчиков не
• ~50 переводчиков.         растёт т.к. рост
                            означает:
                            – Больше времени на
• Приоритеты:                 общение, меньше на
  – Стабильность кода.        код.
  – Надёжность кода.        – Возможные
  – Единый стиль.             конфликты.
Use the force and read the source!
Нет уж, спасибо!
Документация
• Код без документации — мусор.
• 40% успешности проекта — документация.
• Пишем код — обновляем документацию.
• Всегда сразу документируем методы,
  классы и свойства.
• Важны примеры, но слишком много
  примеров — тоже плохо.
Почему код должен быть
            приятным?
• Чтобы проект доставлял разработчику не
  меньше удовольствия, чем пользователям.
• Чтобы не тратить неоправданно много
  времени на документацию.

• Деньги, время, мотивация.
Каким должен быть 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

PDF
Как разраба
PDF
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
PPTX
Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (St...
PDF
Быстрое расширение Robot Framework под свои нужды с использованием Python
PPTX
Какой фреймворк нам нужен для Web? Денис Цыплаков
PPTX
мир без Jsp. thymeleaf 2.0
PDF
UWDC'12, Александр Макаров, О командной разработке и фреймворках
PDF
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
Как разраба
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (St...
Быстрое расширение Robot Framework под свои нужды с использованием Python
Какой фреймворк нам нужен для Web? Денис Цыплаков
мир без Jsp. thymeleaf 2.0
UWDC'12, Александр Макаров, О командной разработке и фреймворках
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...

What's hot (20)

PPTX
Всему своё время Highload Junior 2016
PPTX
О фреймворках Backend conf 2016
PPTX
Как мы делаем Banki.ru
PPTX
Creating Open Source Projects
PDF
Junior java standard edition developer
PDF
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
PPT
Презентация: 1С-Bitrix — как начать
PPT
WepPerfomance,
PDF
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
PDF
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
PDF
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живых
PDF
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
PDF
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
PPTX
встать на рельсы
PDF
Дмитрий Кушников — БЭМ глазами бэкенд-разработчика
PDF
В поисках магической кнопки или как приручить SOAP UI
PDF
Бумажное прототипирование
PDF
«Компьютерное зрение как альтернатива офисным пропускам», Вадим Балашов
PDF
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
PDF
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
Всему своё время Highload Junior 2016
О фреймворках Backend conf 2016
Как мы делаем Banki.ru
Creating Open Source Projects
Junior java standard edition developer
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Презентация: 1С-Bitrix — как начать
WepPerfomance,
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живых
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
встать на рельсы
Дмитрий Кушников — БЭМ глазами бэкенд-разработчика
В поисках магической кнопки или как приручить SOAP UI
Бумажное прототипирование
«Компьютерное зрение как альтернатива офисным пропускам», Вадим Балашов
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
Ad

Viewers also liked (8)

PDF
CodeFest 2013. Мирютов А. — Мотивация заинтересованных лиц
PPT
CodeFest 2011. Зиновьев А. — Куда приводят мечты: разработка мобильных онлайн...
PPTX
CodeFest 2013. Шергин Д. — Платформа 3D-графики Unigine — проект мирового уро...
PPT
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...
PDF
Разработка мультиплатформенных 3D игр (Unigine, CodeFest2012)
PPTX
Переход к визуализации с учетом физических свойств материалов на примере 3D п...
PPTX
Анатомия одного кадра в Unigine Engine (Леонид Лубенко) - DEBUG TiME #3 2016
PPTX
Базовые понятия 3D графики (Ден Шергин) - DEBUG TiME #3 2016
CodeFest 2013. Мирютов А. — Мотивация заинтересованных лиц
CodeFest 2011. Зиновьев А. — Куда приводят мечты: разработка мобильных онлайн...
CodeFest 2013. Шергин Д. — Платформа 3D-графики Unigine — проект мирового уро...
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...
Разработка мультиплатформенных 3D игр (Unigine, CodeFest2012)
Переход к визуализации с учетом физических свойств материалов на примере 3D п...
Анатомия одного кадра в Unigine Engine (Леонид Лубенко) - DEBUG TiME #3 2016
Базовые понятия 3D графики (Ден Шергин) - DEBUG TiME #3 2016
Ad

Similar to CodeFest 2011. Макаров А. — Как разрабатывается Yii (20)

ODP
александр макаров Yii Rit 2010
PPT
Yii rit 2010
PDF
UWDC 2013, Как мы используем Yii
ODP
Выбираем PHP-фреймворк. Особенности разработки с фреймворками
PDF
UWDC 2013, Yii2
PPTX
«Особенности Agile-разработки интернет-проектов»
ODP
Alexandr Makarov - PHP framework Yii
ODP
Yii PHP framework: basics, techniques and some inside info
PDF
О фреймворках / Роман Ивлиев (Банки.ру)
PDF
UWDC'12, Александр Макаров, Yii, его разработка и Yii2
PDF
Разработка веб-сервисов осень 2013 лекция 8
PDF
WordPress как фреймворк для создания сложных систем
PDF
терминология vol.2
PPTX
Little Service in 2h
PPTX
Большие проекты, архитектура и фреймворки.
PPTX
Как писать на PHP и не стать быдло-кодером
PPTX
разработка бизнес приложений (7)
PDF
DevConf 2012 - Yii, его разработка и Yii2
ODP
Refactoring
KEY
Web application framework
александр макаров Yii Rit 2010
Yii rit 2010
UWDC 2013, Как мы используем Yii
Выбираем PHP-фреймворк. Особенности разработки с фреймворками
UWDC 2013, Yii2
«Особенности Agile-разработки интернет-проектов»
Alexandr Makarov - PHP framework Yii
Yii PHP framework: basics, techniques and some inside info
О фреймворках / Роман Ивлиев (Банки.ру)
UWDC'12, Александр Макаров, Yii, его разработка и Yii2
Разработка веб-сервисов осень 2013 лекция 8
WordPress как фреймворк для создания сложных систем
терминология vol.2
Little Service in 2h
Большие проекты, архитектура и фреймворки.
Как писать на PHP и не стать быдло-кодером
разработка бизнес приложений (7)
DevConf 2012 - Yii, его разработка и Yii2
Refactoring
Web application framework

More from CodeFest (20)

PDF
Alexander Graebe
PDF
Никита Прокопов
PPTX
Денис Баталов
PDF
Елена Гальцина
PDF
Александр Калашников
PDF
Ирина Иванова
PDF
Marko Berković
PDF
Денис Кортунов
PDF
Александр Зимин
PDF
Сергей Крапивенский
PDF
Сергей Игнатов
PDF
Николай Крапивный
PDF
Alexander Graebe
PDF
Вадим Смирнов
PDF
Константин Осипов
PDF
Raffaele Rialdi
PDF
Максим Пугачев
PDF
Rene Groeschke
PDF
Иван Бондаренко
PDF
Mete Atamel
Alexander Graebe
Никита Прокопов
Денис Баталов
Елена Гальцина
Александр Калашников
Ирина Иванова
Marko Berković
Денис Кортунов
Александр Зимин
Сергей Крапивенский
Сергей Игнатов
Николай Крапивный
Alexander Graebe
Вадим Смирнов
Константин Осипов
Raffaele Rialdi
Максим Пугачев
Rene Groeschke
Иван Бондаренко
Mete Atamel

CodeFest 2011. Макаров А. — Как разрабатывается Yii

  • 1. Как разрабатывается Макаров Александр Yii core team
  • 2. Что такое Yii? PHP5 MVC фреймворк. Свой Active Record. Лёгкий и быстрый. I18n на основе CLDR. Мощный и гибкий. Кэш с зависимостями Красивый API. и кучей бэкэндов. Пересекае RBAC. тся с Prado, Консоль. Rails, Symfony и Генератор кода. Joomla. … Prado, с 2004 → Yii 1.0, 2008 → Yii 1.1, 2010
  • 3. Типичный action public function actionView($id) { $post = Post::model()->findByPk($id); if(!$post) throw new CHttpException(404); $this->render('view', array( 'post' => $post, )); }
  • 4. И немного AR посложнее $posts = Post::model() ->taggedWith(array('yii', 'CodeFest'))->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. Компания — зло для фреймворка? • Не всегда. • Acquia, Lullabot (Drupal) • Percona (MySQL) • Zabbix
  • 11. Почему BSD? • Фреймворк — инструмент. • Чтобы код «жил» его должны серьёзно использовать. • Серьёзно = для получения прибыли. • BSD не ограничивает коммерческое использование.
  • 12. Сообщество Yii В общем • Оттянул на себя часть • Интересные уникальные сообщества Prado решения, рецепты • Не превратиться в • Собрать лояльное ядро helpdesk • Обучить на личном • Повторяющиеся вопросы примере, что для → wiki, поиск сообщества хорошо • Мало пишут — не всегда • Оставить шанс показать плохо себя
  • 13. Новые предложения Необходимо? Типично? Обсуждение Реализация
  • 14. «Ну и что... Это ситуация когда количество параметров меньше и тут все OK. А ситуация с зомби совсем другая»
  • 15. Команда Yii • 6 разработчиков. • Количество • Технический писатель. разработчиков не • ~50 переводчиков. растёт т.к. рост означает: – Больше времени на • Приоритеты: общение, меньше на – Стабильность кода. код. – Надёжность кода. – Возможные – Единый стиль. конфликты.
  • 16. Use the force and read the source!
  • 18. Документация • Код без документации — мусор. • 40% успешности проекта — документация. • Пишем код — обновляем документацию. • Всегда сразу документируем методы, классы и свойства. • Важны примеры, но слишком много примеров — тоже плохо.
  • 19. Почему код должен быть приятным? • Чтобы проект доставлял разработчику не меньше удовольствия, чем пользователям. • Чтобы не тратить неоправданно много времени на документацию. • Деньги, время, мотивация.
  • 20. Каким должен быть API? • Согласованный. Всё в одном стиле. • Не сложный. Сложность = много всего. – Магия, если она есть, должна обязательно быть однозначной и, по возможности, простой. • Гибкий. Легко поменять поведение. • Документированный. • Гибкость vs простота. – Крайности. God object. • Решение: фасад для скрытия деталей, адаптер для выравнивания API.
  • 21. Готового идеала нет • В больших проектах всегда приходится что- то подпиливать. – Как потом обновлять? – Как ничего не сломать? • В фреймворк нельзя встроить всё. – Надо ещё и сторонний код пилить? – А вдруг не заработает?
  • 22. Версии и обратная совместимость 1.1.x — обратно совместимые релизы. – Небольшие документированные изменения. – Новые возможности. – Подходит для обновления уже начатых проектов. 1.x.0 — частичная несовместимость. – Обновить проект возможно, но затратно. x.0.0 — более свежие возможности без оглядки на обратную совместимость.
  • 23. Поддержка старых версий Проект Фреймворк • Делается не один месяц, • Поддерживать все старые за это время выходит версии нереально → обратно несовместимая ограничиваем время версия. поддержки. • Немедленное • Не перетаскиваем новые адаптирование под неё — возможности в старые потеря времени и денег. версии. Исправляем • Возможно, стоит ошибки. остановиться, но как быть с багами в фреймворке?
  • 24. Инструментарий • «Одноразовую» миграцию данных в большинстве случаев приходится делать много раз. • Код надо тестировать. • Однотипный код писать лень. • IDE должны поддерживать код. • Отладка — это важно.
  • 25. Производительность и оптимизация • Yii быстрый т.к. загружается только то, что нужно. Используется SPL __autoload. • Не подключаемся к БД, пока не понадобится, не парсим запрос пока не потребуют и т.д. • Если код используется часто и много — производительность важнее фич. • Если используется редко — производительность не так важна.
  • 26. Yii — это хорошо!
  • 27. Спасибо • http://yiiframework.com/ • http://yiiframework.ru/ • http://rmcreative.ru/ • sam@rmcreative.ru • Принимаются – Отзывы – Идеи – Предложения