Yii 2.1, PHP и фреймворки

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

Yii core team, Skyeng

https://slides.rmcreative.ru/2018/yii21-php-frameworks/

Обо мне

Поговорим про

  • PHP.
  • Его направление.
  • Что изучать?
  • На какой фреймворк перепрыгнуть?
  • Yii.

Рассказывать буду, в основном, для тех, кто учится.

Начнём с PHP

PHP

Куда движется язык?

Но сначала немного про языки

Чем один язык отличается от другого?

Пользователи

  • Новички.
  • Специалисты.
  • Профессионалы.
  • ...

В бизнесе редко бывают на 100% «звёздные» команды. Нужен ± язык для новичков.

Новичкам нужны

  • Рамки.
  • Строгость.
  • Примеры.
  • Java для новичков.
  • Python для бывалых.
  • JavaScript...

Фичи не так важны

В вебе мы почти всё собираем из готового.
Если надо что-то эдакое — микросервис на golang поможет.

Парадигма важна!

Проекты

  • Свои проекты для души.
  • Свои проекты $.
  • Команды $.
  • Много команд $.

Развитие PHP

Composer PHP stats

PHP 7.0

  • Производительность.
  • Больше исключений.
  • Тайпхинты скаляров и return-типы.
  • assert().
  • Безопасность.
  • Всегда кешируется phpdoc = аннотации.

PHP 7.1

  • nullable types.
  • void return.
  • Область видимости для констант.
  • pcntl_async_signals.

PHP 7.2

  • object как тайпхинт.
  • Ещё больше безопасности.
  • Сахар.

PHP 7.3

  • is_countable().
  • Сахар.

Почему?

Так PHP норм?

Более чем!

  • Где-то посередине между «для новичков» и «для души».
  • Фреймворки могут сместить планку в ту или иную сторону.
  • Тимлиды и инструменты не дремлют.
  • Позволяет делать годные прототипы очень быстро.
  • Инфраструктура хороша! Composer.
  • stateless по умолчанию.

Что изучать?

То, что пригодится всегда

  • ООП/ООД. Проверка: cohesion/coupling.
  • HTTP/HTTPS/REST.
  • Безопасность.
  • SQL.
  • CAP (Consistency-Availability-Partition Tolerance).
  • Базовые понятия о сложности алгоритмов.
  • Рефакторинг.
  • Linux.

Это не значит что фреймворк и язык не надо изучать!

Бизнесу важно

  • Предсказуемость.
  • Скорость.
  • Стоимость.
  • Умение выражать мысли.
  • Умение резать углы.
  • Умение оценивать задачи.
  • Любознательность.

На какой фреймворк перепрыгнуть?

А что у нас есть?

  • Laravel.
  • Symfony.
  • Yii 2.
  • CakePHP.
  • CodeIgniter.
  • Zend Framework.
  • reactphp.
  • Phalcon.
  • FuelPHP.
  • Slim, F3, ...

Laravel

  • Крутейший маркетинг. На данный момент самый популярный.
  • Секретные приоритеты. Как у Apple.
  • Спорное отношение к сообществу.
  • Годный.

Symfony

  • Сильные рамки.
  • Проблемы производительности решает кешем и компиляцией (OroCRM).
  • Лучше чтобы кеш работал. Внутри слои.
  • Очень похож по стилю на Java и Spring.

Zend Framework

Похож на Symfony. Слишком.

Phalcon

  • Рвёт всех по производительности.
  • Во внутренности просто так не полезешь.

ReactPHP

Отличный вариант для асинхронных демонов.

Работа в «студии»

  • Wordpress.
  • Drupal.
  • ...

Но некоторые делают себе CMS на фреймворках.

Что нужно от фреймворка?

Фреймворк должен нравиться.

А может ну их, фреймворки?

А у вас достаточно опыта и времени?

  • Собрать фреймворк так и так придётся.
  • Либы отдельно может и норм, но как они вместе?
  • Как обучить команду?
  • Сроки... вчера?

Попробуйте. У нас вышло ;)

Не зацикливайтесь на одном фреймворке или языке

  • PHP MVC.
  • Очень быстрая разработка.
  • Возможность перейти от MVP к поддержке и развитию.
  • Много всего из коробки.
  • Гибок, прагматичен.
  • Позволяет резать углы.

Чуть статистики

  • Slack, 921 пользователь.
  • 392 проекта на YiiPowered.
  • 11951 звёзда на Github.
  • 32027 участников Facebook-группы.

Философия Yii

  • Только необходимая сложность.
  • API и юзабилити кода прежде всего.
  • Документировать всё.
  • Обратная совместимость и поддержка — это важно.
  • Слушать сообщество.
  • OpenSource — совместная работа над общим инструментом.

Как и у любого фреймворка у Yii есть сильные и слабые стороны.

  • RAD
  • Не очень строг
  • Абстракции достаточно тонкие
  • Производительность
  • ...

Ошибки 2.0

Взяли слишком много всего сразу

И засунули слишком много в ядро.

  • jQuery.
  • PJAX.
  • CAPTCHA.
  • Masked input.
  • Остальной клиентсайд :(

fxp composer plugin

Попил много крови, но вроде стабилизировался.

Не использовали многие PSR в разработке

Их приняли, а у нас обратная совместимость.

next?

  • Новый сайт (тоже OpenSource).
  • Улучшения в инфраструктуре.
  • Перелопачены внутренности AR.
  • Собрали много фидбэка.
  • Yii 2.0 заморожен по фичам.
  • Yii 2.1 пилим.
  • yiisoft/di.
  • Пока поддерживаем 1.1.

Нужна помощь!

Время вопросов!

Что бы вы хотели увидеть в 3.0?