Comments 6
По мне так дженериков через аннотации хватает, разве что можно добавить native-аннотации типа #[Template] #[Extends] #[Implements], чтобы IDE-шкам легче было индексировать.
PHP Compile Time Generics: да или нет?
Нет.
А какие ещё могут быть дженерики ? в первую очередь нужно думать о бенефитах которые это всё предоставляет, а исходя из прочтения оригинальных статей я их для себя так и не смог вывести. Возможно сообществу стоило сместить акцент именно на это, например тотальная типизация могла бы быть использована для кодогенерации в какой нибудь Си. Но пока что это выглядит как тотальное усложнение без видимых преимуществ (о чем критики и говорят упоминая стат анализаторы которые не дают импакта на производительность). Надо продолжать работать, например над библиотеками для ML о чем Пронский и переживает за уход разрабов из стэка в питонисты например. Только тогда комьюнити будет расти и набираться свежей крови.
Пока что я против, по крайней мере до момента когда не появится вменяемый роадмэп который наглядно объяснит где это можно использовать и принесёт преимущества
Нет. В PHP в принципе нет ничего Compile-Time, все в Run-Time. Этой концепции и следует придерживаться в дальнейшем.
Не нужны эти рантайм дженерики. Таких хватает. Может быть, стоит только через атрибуты их как-то писать, а не через phpdoc.
Раз уж упомянули про ковариантность и контравариантность, а точнее, про ограничения на сужение и расширение типов. Может кто-нибудь объяснит? Я так понимаю, эти ограничения нужны для соблюдение принципа подстановки Лисков. Но этот принцип можно нарушить еще тысячью и одним способом. Какой толк от этих ограничений тогда?
Кроме того, этот принцип не всегда нужно и возможно соблюдать, он не является какой доказанной теоремой или аксиомой. А точнее, его нарушение может быть правильно учтено в логике программы так, что он как бы и не нарушается. Вообще, язык программирования не должен диктовать программисту, как реализовывать логику программы. Есть различные стандарты, PSR, но ЯП же не проверяет их соблюдение. Так почему бы не убрать эти ограничения, и не позволить хоть сужать, хоть расширять тип, как в параметре, так и возвращаемом значении? Или может в реализации этого есть какие-то технические сложности? И пусть оно проверяется статанализом, если нужно. Хорошо хоть через phpdoc можно любой тип задать...
PHP Compile Time Generics: да или нет?