Pull to refresh

Comments 40

> RFC: Mixed typehint — Предлагается добавить mixed typehint:

Вот я не понимаю почему нельзя было добавить данный тип с самого начала, при внедрении типизации? Либо я один такой дурак и не мог грамотно реализовать паттерн repository без mixed?

А зачем в репозитории mixed? Репозиторий либо конкретную сущность возвращает, либо набор, т.е. array.

UFO just landed and posted this here
Ничего не указано — как вариант просто забыл указать или поленился.
mixed — явно указано, что здесь mixed.
/sarcasm/
предлагаем в следующей версии вместо пустой строки писать «this is empty line, nothing here»
что бы точно быть уверенным в том, что здесь должна быть именно пустая строка, а не что-то важное, что ты просто забыл написать или поленился
/sarcasm/

Хорошая практика именно так писать в пустых try-catch.

UFO just landed and posted this here

По разному может быть, и зависит от контекста.

О, Сэм )

По поводу очередей на Yii2 — вроде, была инфа, что они пока не особо юзабельны, мол, пользуйтесь другими (сторонними) расширениям. Сейчас ситуация изменилась?
offtop

<irony>
Мир перевернулся в тот самый момент, когда SamDark решил поговорить о хороших практиках. Осталось услышать доклад от разрабов битрикса о каких-нибудь SOLID, SRP и прочих страшных штуках, и можно считать, что в жизни видел всё +))))
</irony>

Я о них всегда говорил и мнение особо не поменялось. Просто раньше я говорил очень неосторожно и меня можно было понять как «не стоит их изучать и применять», хотя на самом деле я имел ввиду то, что думать надо, а не фанатично применять не разобравшись.

Спорное улучшение. Как и nullable, поскольку ослабляет типизацию.

Ослабляет типизацию, а также позволяет тут и там нарушать контракты, которые по идее должны быть заложены в интерфейсах...

mixed и так используется повсеместно и ослабляет типизацию.
теперь он только будет явно указываться.

Одно дело принять правило: везде используем тайпхинтинг и выпиливать места без типизации, где только возможно, а где невозможно пересматривать контракты.


И другое дело принять правило, но либо с оговоркой: не используем mixed, либо оставить лазейку лентяям.


Я за первый вариант без оговорок и двусмысленностей, как более строгий. И поэтому против mixed.

Категорично против mixed нельзя быть. Ну вот как например быть с реестром, про который я начал беседу? Вот запрашиваете вы registry->get($var) — и вот лично у меня фреймворк сейчас может вернуть bool, string или null. Как тут без mixed обойтись?
Ваше мнение по этому поводу, несомненно, имеет право на существование.
Но оно не имеет отношения к тому, что здесь обсуждается.
Ой господа, простите, не repository я имел ввиду а registry. С утра голова не заметила подвоха.
Лучше бы реализовали как в phpdoc сейчас пишут — варианты типов данных: string[]|string, например.
Это позволило бы сильно снизить вообще необходимость такого типа как mixed.
Попахивает. Зачем в одном методе возвращать массив или строку?
Если вводить типизированные массивы, придётся каждый раз в рантайме обходить весь массив и проверять каждый элемент.

А сейчас это и так приходится делать вручную через foreach или какой-нибудь Webmozart\Assert.

Как зачем? Чтобы не прилетало что попало. Целостность данных, все дела.

Это вы вообще везде этим занимаетесь?

Только если массив должен быть наполнен объектами пользовательского типа данных.

UFO just landed and posted this here

Как ArrayAccess спасет от доступа к несуществующему индексу и от того, что нужно знать, какие индексы существуют?

UFO just landed and posted this here

static — это рантайм, а вся типизация резолвится статически, как в константах и аргументах методов (там, например, нет static, но есть self и в т.ч. доступны примитивные операции). Именно по-этому тайпхинтинг не появится никогда =)

При возникновении ошибки во время вызовов json_encode()/json_decode() предлагается бросать ошибку класса E_WARNING


Шёл 2017-й год, а они всё бросали ворнинги.
В обсуждении вроде очень критично отнеслись к RFC. Да и я почти точно уверен, что не пройдет.

в 2017 warning-и являются исключениями

Для поддержания совместимости со старьём, а не для того, чтобы новые добавлять.

В 7 можно его впоймать через try catch, видимо потому такое предложение

Sign up to leave a comment.