В мире PHP #0
FartTime
Продвинутая рефлексия
Symfony посмотрели на типун Удальцова и захотели такой же. Получился компонент типунфъ в сдержанном и консервативном стиле от дедов. Хочешь не хочешь, а эта херня получит распространение.
Кирилл Несмеянов, кстати, подсуетился раньше и запилил PTL, который выглядит более завершенным. Но это только снаружи: я решил попробовать пакет Mapper (больная для меня тема), однако документация отсутствует, а установить по ридми мне его не удалось:
$ composer require type-lang/mapper $: The term '$' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
С маппером от Кирилла не прокатило, но эй, тут релизнулся AutoMapper v9.0. Девятая версия, Карл! Такой богатой историей версий может похвастаться только phpunit, подумал я. Но нет, версии начинаются с 8.0.0, а звёзд даже немного меньше чем у Trap (а должно быть НАМНОГО меньше 😉). Кстати, забавно, что в этом маппере есть только один метод map().
Упростили так упростили.

Версионирование
В закрытых сверхсекретных чатах Yii, доступ к которым не получить даже по подписке в 500 рублей, возникли вбросы на темы:
- Symfony и Laravel лажают в SemVer (делают breaking change в минорах). А ещё у них всратые стектрейсы, из-за чего не понятно, что сломалось и где фиксить.
- У обоих присутствует маркетинговый загон на мажорные версии. Версия общая на всю платформу и из-за этого нельзя двинуть какой-то пакет вперёд всей платформы.
- А вот в Yii2 всё с этим вполне неплохо. В Yii3 будет ещё лучше, надо только подождать.
Скажу лишь своё мнение.
Не считаю, что версионирование Symfony обусловлено маркетинговыми загонами. Версионирование платформы сквозь все пакеты для меня, как пользователя, выглядит вполне удобной опцией. Традицию делать версию Х.4.Х LTS тоже отношу к плюсам.
Разработка всех пакетов фреймворка ведётся в монорепе, изменения из которой потом автоматически раскидываются в отдельные репозитории. И так делают многие.
Мажорный релиз на пакете платформы, в котором даже не было каких-то изменений, тоже вписывается в картину SemVer (не запрещается повышать мажорную версию при минорных исправлениях).
Ну а если в больших фреймворках и ломают обратную совместимость при минорных релизах, то это скорее просто чей-то косяк, нежели маркетинг или план. Но с кем не бывает.
У Yii3 каждый пакет живёт своей версионной жизнью. Это хорошо и плохо.
Хорошо: можно переломать любой из пакетов несколько раз в любое время, не дожидаясь мажорной версии платформы.
Плохо: команде сложнее поддерживать зоопарк пакетов (нужны спец. тулы); пользователю нужно обновлять пакеты по одному и вероятность конфликтов только возрастает. Такое уже было с пакетами Yii Cycle и Data.
У Laravel всё немного интереснее. Вот у них, как по мне, чистый маркетинг: выходит Тейлор к своей команде и говорит "пора!". Но на это "пора" в репозитории особо ничего нет.
Нуно говорит: "сэр, но мы ничего не сломали, ничего не прокачали. Мы весь год просто ишуи отклоняли и заборы в розовый перекрашивали."
Тейлор: "Нас рать! Нужно сделать из этого СОБЫТИЕ!"
"Флаг тебе в руки" — кто-то ляпнул со стороны.
Тейлор: "Не флаг а PENNANT! Отлично, давайте ещё идеи!"
Нуно: "Скажем, что у нас всё покрыто типами PHP 8 и Strict Types!"

Команда перешёптывается: "В PHP есть типы?"
Тейлор: "Нужна конфа! Набирайте спикеров. Кто там у нас чего наговнокодил? Позовите того чела, который десктопы на PHP пишет."
Кто-то: "DevelStudio?"
Тейлор: "Та не, другого... И вот этого, с Зелёным слоником..."

На следующий год курнут и решат удалить конфиги из шаблона, чтобы выглядело как breaking change.
И в таком духе. Релиз есть, прогресса нет.

Spiral v4
Spiral догоняет его по второму кругу и готовится к версии 4.

Кирилл ушёл после релиза Spiral 2.8.13. К релизу v3.0.0 мы проводили глобальную декириллизацию фреймворка. Нахуевертить всё и сразу в одну монорепу — дело не хитрое. Но вот распутывать это пришлось нам (дифф).
Вынесли от туда бриджи, покрыли всё тестами, добавили статанализ и прочие блага современной разработки. От такого фреймворк похудел на ~10% даже с новыми фичами. За монорепу, конечно, спасибо, но и сабсплит (разбиение монорепы на репозитории) нам тоже пришлось переделывать.
Об этом можно сложить героический эпос.
Что в v4.0.0?
- Новые интерцепторы (закончено на 90%).
- Честные Container Scopes (60%). Это отвал башки, не уверен, что мир PHP к такому готов.
- Интеграция с Symfony Messenger (30%, альфа).
- По возможности закончить декириллизацию.
- Сделать инструменты автоматической миграции с версии 3.х.
Как говорится, про бывших коллег либо хорошо, либо правду. Кирилл — большой молодец. Не сочтите пост куском говна в его сторону. Но фреймворк уже давно не тот, каким Кирилл его помнит.
Service Provider PSR
Уже много лет Rasmus Schultz работает над тем, чтобы унифицировать сервис-провайдеры.

Начинал он как дед — со всяких интерфейсов с кложурами внутри.
Но ребята из Symfony сказали, что с их компилируемым контейнером такое не прокатит. Вроде того, что "наш контейнер настолько продвинутый, что обосрался на кложурах, а вообще это не производительно!".
Laravel снова окуклился, заявив, что "сложно. И вообще FIG этот и PSR'ы не нужны. Сообщество делало бриджи и всем с этого ок".
Тредов несколько. Основные тут и на гугле.
Сейчас Расмус пришёл к атрибутам. Выглядит заметно лучше и подойдёт любому контейнеру.
Вообще, это выглядит интересно: чувак пытается пропихнуть полезный для комьюнити PSR, и чтобы это сделать, он должен заручиться поддержкой фреймворков-монополистов, которые хер положили на все эти PSR и FIG в целом.
Не пора ли создавать новую группу FIG 2.0, способную решить как проблемы предыдущих PSR, так и принять новые вызовы?
Open Server и Herd
Победит тот, кто будет запускать Buggregator в один клик.