DevConf 2016: Интервью с одним из разработчиков Yii

в 10:33, , рубрики: devconf, devconf 2016, php, yii, yii 2, Блог компании DevConf, Разработка веб-сайтов

Представляем небольшое интервью с одним из докладчиков DevConf 2016 Александром Макаровым aka SamDark. Он является членом Yii core team c 2010 года и представителем Yii в PHP-FIG. Автор книги Yii Application Development Cookbook.

В первую очередь хотел бы спросить о работе. Ты работаешь в Stay.com. Подозреваю, что удаленно. Ты также активно участвуешь в конференциях, работаешь над Yii. Как удается совмещать? Это не фулл-тайм? Или что-то сродни когда-то гугловскому «20% на свои проекты»?

Да, я работаю в Stay.com. В основном, удалённо. Это fulltime. Yii занимаюсь либо в свободное время, либо когда не очень сильная загрузка по основному проекту.
На тему конференций у меня договорённость: они оплачиваются ровно так же, как и рабочие дни.

Версия Yii на рабочем проекте? ;-) Трудно ли идти в ногу со свежей версией?

1.1.17 + немного патчей из master. На 2.0 перейти пока не получается. Переписывание проекта — задача ресурсоёмкая. Проект не маленький. Текущих задач много.
Если проект изначально на 2.0, идти в ногу с релизами фреймворка не сложно. Они не такие частые и если ломают совместимость, то об этом сообщается в специальном файле UPGRADE.

Чем вы занимаетесь в PHP-FIG? Только голосованием за PSR? Полезно ли обычным PHP-разработчикам(не тем, кто делает фреймворки), знать PSR? Если полезно, то чем.

Помимо голосования и обсуждений я занимался PSR-12. Новым стилем кодирования на замену PSR-2. Начали мы бодро, но так как он про PHP 7, а семёрку ещё активно не начали использовать, решили немного подождать пока можно будет собрать нормальную статистику.

Прочитать все принятые PSR очень полезно. Многие из них часто встречаются в PHP. Остальные, вроде PSR-6, как минимум интересно и полезно изучить перед разработкой своих решений.

PHP последнее время развивается стремительно. Новая версия, куча различных rfc. И если некоторые изменения — просто гармоничное развитие языка, то такие фичи PHP7 как scalar type hinting and return types сильно приблизили PHP к статически типизированным языкам. Наблюдая за спорами, мне показалось, что PHP-разработчики разделились на два лагеря. Одни приветствуют новые веяния. Другим же не нравится это превращение PHP в Java(C#). Аргумент последних — у PHP всегда была своя ниша, отличная от Java и он всегда был динамически-типизированным языком. Что думаешь на этот счет?

Разработка PHP — это OpenSource, где всё решает коллективное голосование. Судя по последним итогам, ярых противников изменений среди имеющих право голоса сейчас не так много. Явную типизацию я приветствую, но не собираюсь её фанатично использовать. Всему своё место. return types в 7.0 для меня практически бесполезны из-за nullable types.

В дополнение к предыдущему вопросу, похоже что у PHP наблюдается какая-то проблема роста. Добавили return types без nullable types. А из последнего — intersection types и union types, которые дадут возможность писать такой код:

function RecordsToList(Array | (Countable & Traversable) $input): String { ... }

Лично у меня возникает такое чувство, что такими rfc-заплатками хотят закрыть глубинные проблемы PHP — проблемы с базовыми интерфейсами, и array, который не поддерживает эти интерфейсы. Как современный фреймворк, Yii будет работать на PHP7(ведь так? он уже работает?), но хочешь ли ты, чтобы Yii использовал такие вот фичи PHP7? Да, BC помешает этому в текущей версии. Но если говорить про будущие версии?

PHP — это наследие из решений, принятых очень давно. Ломать совместимость сразу и много нельзя: пользователи не поймут. Поэтому и получаются такие вот решение-патчи. Какие-то из них странные, какие-то вполне вписываются.
Yii уже работает на PHP 7 и уже частично использует его возможности, для старых версий PHP откатываясь на собственный код. В будущих версиях требования к версии PHP будут плавно увеличиваться, свой код постепенно убираться в пользу того, что появилось в PHP.

А вообще, как думаешь, когда мэйнстримовые фреймворки начнут ломать свою compatibility с PHP 5.*? Чем PHP7 может заманить?

Через 2.5 года: secure.php.net/supported-versions.php
Пока PHP 7 не может заманить разрабочиков фреймворков практически ничем, но совместимость с ним поддерживать однозначно необходимо.

Я последние свои проекты писал на laravel. И там используются два подхода для Inversion of Control — Service locator в виде псевдостатических классов-фасадов и DI в виде Constructor injection, Controller action injection, etc. Т.е. одно и тоже действие почти всегда можно сделать двумя вариантами. Например:

Mail::send(....)

или

public function __construct(Mailer $mailer)
{
    $this->mailer = $mailer;
}
...
public function doSomeAction(...)
{
    $this->mailer->send(...)
}

Несмотря на то, что в документации почти везде используются классы-фасады как более простой вариант, опытные laravel-разработчики советуют использовать инъекции. Код с ними намного менее связанный(low coupling) и, я надеюсь, когда-нибудь и в хелпе для новичков будут рекомендовать их. Насколько я знаю, в Yii основной вариант для IoC — Service locator. Но какие-то варианты для DI там тоже есть(используются только внутри фреймворка?). Собираетесь ли вы в Yii вводить автоматические инъекции зависимостей как основной метод IoC?

Автоматические инъекции уже давно есть, документированы и активно используются теми, кому это близко. Планируется более активно рекомендовать такой подход в официальной документации.

Вопрос от Grikdotnet:
Почему забили на модульность и когда будет микроядро?

Микроядро будет где-то в 2.2 — 2.3. На модульность не забили. Во-первых, она уже в каком-то виде есть: bootstrap, redis и т.д. Во-вторых, в 2.1 из ядра по плану переедет практически всё, связанное с клиентсайдом.

Пора переходить к DevConf. Ты докладываешь про безопасность. Из описания я не сразу понял для кого он. Для админов или программистов?

Для программистов. Админского будет мало.

Ты являешься одним из организаторов Yii-хакатона, который будет проведен в рамках DevConf. Поделись информацией. Есть ли уже список тем?

Темы будут определены в зависимости от числа желающих поучаствовать. Есть два типа задач. Первый — это то, что будет интересно всему сообществу: допил официального расширения для очередей и другие issue с github, совместный разбор и документирование возможностей, доработки по новому yiiframework.com. Второй — идеи, высказанные в сообществе: блогодвижок с туториалом по его созданию (примерно как это было для 1.1), отдельные расширения, плодотворные обсуждения на тему модных сейчас DDD и сервисного слоя, итоги которых будут оформлены в виде статей или разделов руководства.

Такое вот небольшое интервью. Если будут у вас вопросы к SamDark в комментариях, я попробую пригласить его в топик. От себя добавлю, что хакатон будет проводиться в выходные 18-19 июня и, разумеется, будет бесплатным. О точном времени и месте проведения будет объявлено в ближайшее время.

До встречи на DevConf 2016.

Автор: DevConf

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js