ХабрПостыНовостиМегапосты?

Встречаем PHP 8 вместе: советы по обновлению, мнения за и против и интервью с ключевыми разработчиками

У PHP отличное сообщество. Пандемия отобрала у нас митапы и конференцию, но мы можем собраться 25 ноября вечером в онлайне на:



Для участия достаточно зарегистрироваться, это бесплатно. А пока есть время, мы попросили ребят, которые придут в трансляцию, вспомнить, за что они любили и не любили предыдущие версии языка.


Роман pronskiy Пронский — автор PHP-дайджестов и главный по маркетингу в PhpStorm. Соведущий нашего митапа


— Что было самым крутым в PHP 5?
— Неймспейсы, оператор goto ( ͡° ͜ʖ ͡°)

— А самым ужасным и вредным?
— Трейты.

— Когда PHP 6 не увидел свет, ты…
— Искал свою первую работу, связанную с PHP.

— Самое крутое в PHP 7?
— Zend Engine 3 — производительность!

— А самое бесполезное в 7-ке?
— Не помню ничего такого.


Александр SamDark Макаров — соавтор Yii3, главный по программе PHP Russia. Соведущий нашего митапа


— Что было самым крутым в PHP 5?
— Zend Engine 2. Нормальное ООП в сравнении с PHP 4 + много классных фич в промежуточных релизах.

— А самым ужасным?
— Ничего прям ужасного не вспомню.

— Когда PHP 6 не увидел свет, ты…
— В общем-то, не заметил этого :) Но потом, когда вчитался, понял, какой объём работ был выкинут — и насколько это должно быть обидно.

— Самое крутое в PHP 7?
— Скорость, типизация, ??, анонимные классы.

— А самое бесполезное в 7-ке?
— Семёрка хорошая.


Валентин vudaltsov Удальцов — автор телеграм-канала «Пых», активный контрибьютор в Symfony


— Что было самым крутым в PHP 5?
— То, что больше не снится мне в страшных снах.

— А самым ужасным?
— trait

— Когда PHP 6 не увидел свет, ты…
— Перешёл на QBasic.

— Самое крутое в PHP 7?
— ??=

— А самое бесполезное в 7-ке?
— trait.


Альберт alexleonov Степанцев, автор статьи «Мне не нравится, во что превращается PHP»


— Что было самым крутым в PHP 5?
— Самое крутое, что он был вообще. Без него бы не было современных версий.

— А самым вредным?
— Пятерка была разной: между 5.6 и 5.0 скорее больше различий, чем чего-то общего. Язык изменился неузнаваемо. Лично для меня, наверное, самым вредным стало то, что длина int зависит от разрядности операционной системы.

— Когда PHP 6 не увидел свет, ты…
— Хотел скупить все книги по PHP 6, которые успели издать.

— Самое крутое в PHP 7?
— NG.

— А самое бесполезное в 7-ке?
— Когда-то считал бесполезными анонимные классы. Теперь так не считаю.

p.s. Стрим организован совместными усилиями Онтико (PHP Russia), devrel-команды Skyeng и проекта PHP Point. Отдельное спасибо Алисе alyssashch Мартыновой из ростовского ИТ-сообщества RnD Tech за помощь с сайтом митапа.
@spasibo_kep
23.11.2020 16:00 UTC
Первоисточник

Комментарии

@mSnus
23.11.2020 11:24 UTC
+2

А расскажите, за что трейты так не любят? Использовал один раз в жизни и давно, но тогда пригодились..

23.11.2020 11:32 UTC
0

По факту это сокрытие проблемы с copy-paste. Выглядит более-менее, а в действительности всё может быть плохо.

23.11.2020 12:38 UTC
+1
Возможно, из-за того, что они не вписываются в концепцию SOLID, да и вообще могут поломать всё в неправильных руках (см. Deathly Diamond of Death)
23.11.2020 13:58 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
24.11.2020 02:53 UTC
0
В функциональных тестах трейты бывают очень полезны. Там часто нужно протестировать все варианты нескольких признаков. И через композицию это очень красиво решается.
Еще с помощью трейтов можно инжектить часто используемые зависимости в через сеттер. Это уже больше похоже на черную магию, но сколько лишнего кода с ее помощью можно убрать. :)
Плохо, когда трейты используются как альтернатива сервисам. Это усложняет понимание кода.
24.11.2020 10:00 UTC
0

Трейты очень легко использовать во вред, когда вместо качественной декомпозиции, вырывают куски кода в своеобразный include (чем трейт в некоторой степени и является). К тому же трейты и интерфейсы, имхо, это костыль вместо полноценного множественного наследования, в которое PHP не смог, к сожалению.

24.11.2020 10:06 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
24.11.2020 10:23 UTC
0

Можно поподробнее?

24.11.2020 10:36 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
24.11.2020 12:06 UTC
0

Проблема при этом имеет решение.

24.11.2020 12:21 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
24.11.2020 12:41 UTC
0

Но не факт, что лучшее ;)

24.11.2020 11:22 UTC
0

Это, наверное, комментарий о том, что любят за то, что так не должно быть.


Есть система с главным объектом, в котором вся работа, и под-объектом, в котором много более специфичной работы. Оказалось, что третий объект, доступный в главном объекте, нужен также и в том под-объекте. Под-объект создаётся ещё в конструкторе главного объекта, с помощью красивой магии контейнера Symfony Dependency Injection. Согрешил душой, и вместо того, чтобы перехреначить это всё, вынес третий объект в трэйт для главного и для под-объекта и сделал его синглтоном. За этот хак до сих пор ужасно стыдно, но профит был просто шикарный. Дело в том, что с точки зрения DDD было логично, чтобы тот трэйтнутый объект был доступен везде, где можно, так что на сопровождаемость системы эффект хака был нулевой. В общем, хоть я и люблю Perl, но PHP тоже хорош, есть где развернуться при необходимости. Анонимные классы тоже, кстати, весьма хороши! :)

26.11.2020 13:55 UTC
0
Ни разу не было необходимости в анонимных классах. Зачем они могут понадобиться, например?
26.11.2020 14:03 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
28.11.2020 04:24 UTC
0
Ни разу не было необходимости в анонимных классах. Зачем они могут понадобиться, например?

Это, наверное, не столько вопрос необходимости, сколько локального удобства. Был случай, когда был нужен просто безымянный объект для передачи по SOAP. Были свойства, которые в этом объекте нужны всегда, а были такие, которые нужно добавлять по условию, условий несколько. Я пошёл таким путём: в месте перед формированием и отправкой сообщения проверяются условия, создаётся ветвление, в каждой ветке которого инициализируется анонимный класс, который использует базовый трэйт (свойства, которые нужны всегда) и трэйты с условными свойствами. В результате, с одной стороны, SOAP API всегда получал кошерный объект, имеющий только необходимые свойства, а с другой — логика производства значений этих свойств была инкапсулирована под говорящими именами трэйтов с удобствами конструктора, приватных методов и поддержкой IDE. Можно, наверное, было сделать и по-другому, но, как обычно, всё должно быть готово ещё вчера, времени на глубокие размышления нет. Впрочем, поддерживать и расширять эту конструкцию было вполне удобно.

@superD
23.11.2020 14:16 UTC
0
Заголовок спойлера
image

Капчей отсеиваются все «недостойные»? :)

UPD: При вводе существующего email форма просто перезагружается, без отображения ошибки.

В общем, провели вам тестирование с коллегами, пока пытались зарегистрироваться :)
23.11.2020 14:46 UTC
0

Передам куда следует :)

@essome
23.11.2020 19:06 UTC
+1
Считаю трейты одним из самых крутых фич php, очень не хватает в typescript такой же удобной реализации, есть миксины, но они не очень удобны
24.11.2020 08:23 UTC
0
++ главное уметь их готовить. Очень часто использую их как блоки из которых собираю DTO запросов, а в сочетании с интерфейсами — вообще прекрасно.