Comments 27
Очень бы хотелось уже видеть типизированные массивы, по типу:
function foo(int[] $array): Foo[]
Может кто в курсе, есть ли движения в этом направлении? По RFC нашел что-то похожее со статусом decline
Пока такое возможно только при использовании статических анализаторов, например Psalm.
Пока обхожусь таким вариантом
function foo(int ...$array)
Такой вариант создает достаточно большую нагрузку, проверяя типы списка аргументов в рантайме.
array<int>, Generator<int>
и т.д. Были существенные ограничения дизайна, последнее, о чем мне известно.Top PHP Web Development Trends in 2022 - довольно спорная статья, утверждающая, что современные тренды в PHP это: использование версий 7.1 и 7.2 и фреймворков Laravel, CakePHP, CodeIgniter, Zend Framework.
Хах, упомянуть ларавел и не отметить симфони - это, как минимум, странно
Предложение находится в стадии голосования и, в целом, за его принятие уже подано голосов больше, чем за отказ.
Нужно 2/3 что б принять =( Так что скорее всего зареджектят.
P.S. Ой, я слепой слоупок, выше коммент как раз про это. Оказывается уже голосование закончилось даже. Что ж, очень жаль. Придётся дальше покрывать все классы @internal
и @psalm-internal
А может кто-нибудь объяснить, зачем нужен тип возврата null? Другими словами, если принимаем или возвращаем только null, то зачем его вообще принимать или возвращать? При наследовании его невозможно будет переписать (ошибка наследования). Единственный вариант - комбинированные типы с null (и вот их как раз можно было бы сузить в случае возврата или расширить комбинированным типом для параметров), но для этого узкого кейса уже есть nullable types. Что я упустил?
Тоже пока не понимаю полезности типа null, нужен пример из реальной практики где это хорошо зайдет
Нельзя написать:
?string|array
или?string|?array
Надо:
string|array|null
А в стандартной библиотеке такие функции есть и если вводится типизация, то и библиотечные функции должны иметь типизированную сигнатуру.
Зачем Sealed Classes? Кто объяснит их реальное применение, а то кажется, что это какая-то избыточная штука, которой почти никто не будет пользоваться. Я просто реально не понимаю, зачем запрещать реализации классов и ограничивать наследников...
Symfony - убрали официальную документацию на русском языке.
В связи с этим вопрос, кто в теме - она вообще где-то в доступе осталась? Может кто-то участвовал в ее написании. Не то чтобы это было критично - даже полезно, но мне для школьников надо.
Что-то есть, например, здесь, но её актуальность и полнота под большим вопросом.
Собственно переводы и убрали потому что их очень сложно поддерживать в актуальном состоянии.
Также для ознакомления с Symfony сейчас, вероятно, лучше рекомендовать книгу. Вариант на русском с сайта убрали, но он есть, например, здесь.
Книга на русском языке была не до конца обновлена, поэтому её скрыли с сайта.
На днях перевод актуализировали, книга снова доступна.
Похоже, в php опять откат адекватности или я чего-то не понимаю.
Вроде только стали нормально типизировать по-человечески, и вот новый возвращаемый тип false
. Чем им bool
не угодил-то?
Ага, а можно указать, что функция возвращает 42 и ничто иное?
Понимаю откуда ноги растут, но не понимаю зачем это нужно. Про null еще понять можно, это всё же своеобразный тип данных, но false - это же уже и есть данные, но никак не тип.
но false — это же уже и есть данные, но никак не тип.
Почему?
Ну т.е. почему какой-нибудь кейс Red у enum Color { Red, Green, Blue }
рассматривается как отдельный подтип типа Color, который в свою очередь уже enum, а вот enum bool { true, false }
уже нет, например?)
PHP Дайджест № 222/2 (22 февраля – 25 марта 2022)