DevConf 2016: Інтерв'ю з одним з розробників Yii

Представляємо невелике інтерв'ю з одним з доповідачів 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 — locator Service у вигляді псевдостатических класів-фасадів і 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 — locator Service. Але якісь варіанти для 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.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.