Куда катится PHP

а также про Yii и другие фреймворки

Александр Макаров

Yii core team, Stay.com

Надо валить?!

  • Разработчики мигрируют на
    • Ruby
    • Python
    • Java
    • C++
    • ...
  • Мигрируют потому что PHP отстой?!
Пётр тоже мигрирует!

PHP отстой, но не настолько!

  • Отличный выбор для веб разработки.
  • Живее всех живых.
  • Язык программирования — всего лишь инструмент. Один из.
  • С хорошим фреймворком косяки вылезают не так часто.

PHP хорош для бизнеса

  • Ориентирован на веб.
  • Много готового из коробки.
  • Делает всё проще и легче.
  • Просто найти и заменить разработчиков.
  • Меньше риска.
  • Меньше стоимость проекта.
$$$

Хорошо для бизнеса — хорошо для разработчика

PHP стремится к простоте и улучшается

  • API хеширования паролей.
  • Генераторы.
  • Больше единообразия.
  • Встроенный вебсервер.
  • Лучше производительность.
  • Лучше синтаксис.

И это замечательно!

А что фреймворки?

Сначала о хорошем

  • Github стал фактически стандартом для хорошего PHP-кода.
  • Хорошо распространился PSR-0.
  • Есть как минимум несколько стабильных фреймворков, готовых к коммерческому использованию. То есть поддерживаемых и обратно совместимых.
GitHub

А теперь о не очень хорошем…

«Enterprise»

  • ZF 2 и Symfony 2 очень «enterprise».
  • Ещё более, чем были ZF1 и Symfony 1.
WAT?!

Весь этот “enterprise” слишком сложен

Все проблемы программирования можно решить дополнительным слоем абстракции… кроме проблемы избыточной абстракции


David Wheeler

Отзывы о ZF2 и Symfony2

«ZF2 слишком «научный». По нему и его дизайну можно кандидатскую написать. Не поймите меня неправильно, я люблю стандарты, паттерны и т.д., но разработчики ZF2 слишком сильно окунулись в «науку». Symfony2 в этом плане получше, но недостаточно»

Зачем делать сложно, если можно делать просто?

Сделать просто сложнее, чем сделать сложно

Почему ZF2 такой?

  • Zend — коммерческая компания. ZF — дополняющий продукт к IDE, Zend server и т.д.
  • У ZF2 необходимое и достаточное качество. Упрощать интерфейс и делать RAD — трата времени (и денег) на то, что не принесёт дополнительной прибыли. Скорее наоборот.
  • 80% проектов/клиентов не очень-то интересны. Zend может себе это позволить.
  • Хотят получить разочаровавшиеся в J2EE компании.
  • Консалтинг не нужен, если продукт недостаточно сложен ;)

Zend успешна

Что с Symfony 2?

  • Пытаются быть «enterprise» (=сложными), как и ZF2.
  • Sensio labs — коммерческая компания. Зарабатывает на саппорте и консалтинге.
  • http://fabien.potencier.org/article/65/why-symfony
  • Более практичны, чем ZF2.
  • Всё-таки довольно сложны.
  • Сознательно принесли в жертву RAD.

Что же плохого в «enterprise»?

  • Напирают на паттерны. Их видно в интерфейсе.
  • Легче тестировать, но заметно сложнее писать код, отлаживать и изучать.
  • Почти невозможно отдать рутину менее компетентным разработчикам предварительно не потратив много времени на обучение.
  • Высокий риск для того, кто заказывает музыку.

Всё это похоже на прошлое Java…

  • “Their main thesis to support that complexity is… hold your breath… fasten your seatbelts: if it were easier, more stupid people would be using it!. Ta-da!!”
  • “J2EE is no way simple. However the reality is simple: for J2EE to survive — we have to make it simple to build, deploy and manage

В Java всё идёт к упрощению

  • Play
  • Apache Wicket
  • И даже Spring

SF2 и ZF2 — зло?

Нет. Просто другая ниша.

Enterprise — не только сложность

  • Стабильный API.
  • Хорошо оттестированный код.
  • Обратно-совместимые регулярные релизы.
  • Гарантия поддержки на последующие N лет.
  • Хорошая документация.
  • Коммерческая поддержка, тренинги.

И что делать практикам?

Практичные фреймворки

  • Без дополнительных сложностей.
  • Легко изучить.
  • Меньше магии.
  • Меньше конфигурации.
  • Как можно более простой API.

Если есть ещё и всё хорошее от enterprise — идеал

Yii
практичный фреймворк

Мифы о фреймворках

  • Если фреймворк переизобрёл колесо, то он плохой.
  • Если используется контейнер DI и везде клёвые паттерны, то фреймворк хороший.
  • Если фреймворк сделал фичу первым, то он лучше остальных.
  • Слабо связанный фреймворк всегда лучше.
  • Если нет фичи X в фреймворке, то он плохой.

Действительно важно

  • Легко изучать.
  • Легко отлаживать и исправлять ошибки.
  • Не мешает работать и использовать сторонний код.
  • Дружелюбное активное сообщество.
  • Обратно совместим и стабилен.
  • Нет затыков при попытках настроить и расширить.
  • Фреймворк должен нравиться ;)
История Yii Prado, с 2004 → Yii 1.0, 2008 → Yii 1.1, 2010 → ;)

Что такое Yii?

  • PHP5 MVC.
  • Приятный API.
  • DAO, AR, миграции.
  • Построитель форм.
  • Темы.
  • Тестирование.
  • Хорошая документация.
  • Большое дружелюбное сообщество.

Что такое Yii?

  • Кеширование.
  • RBAC.
  • Консоль.
  • error handler, log.
  • Gii.
  • I18n(CLDR).
  • Виджеты.
  • BSD.

Всё ещё остаётся самым быстрым современным PHP-фреймворком

кроме PECL и микрофреймворков

Это не наш тест. http://docs.phalconphp.com/en/latest/reference/benchmark/hello-world.html Производительность Yii

Становится ещё быстрее и менее требовательнее к памяти благодаря сообществу

Распространение Yii
Русскоязычные проекты
И ещё проекты
  • Сбалансированный
  • Стабильный
  • Гибкий
  • Хорошо документирован
  • Не мешает
Хорошо и плохо
В Yii нет ни одного setMyCoolFactoryDependencyInjectionContainer()

Документация очень важна

  • Документируем сразу как пишем код.
  • Основная документация переводится на 16 языков.
  • Не мешает работать и использовать сторонний код.
  • phpdoc.
  • Примеры.
  • Отличные книги.
Документация
Yii может работать с компонентами Symfony 2 и ZF2.
Они ведь именно для этого, правда? ;)

Yii — практичный фреймворк

The end

Слоник намекает...