Scalar type hinting в PHP 5.4.X или 6.X

Ну и раз уж я решил перед сном пописáть о PHP, то продолжу. Ещё новость из мира PHP — в PHP будет scalar type hinting. Илья Альшанетский добился включения своего патча в код.

Сейчас type hinting в PHP есть, я могу указать явно, что параметр будет объектом определённого класса или массивом:

function test1(MyClass $var) {}

function test2(array $var) {}

Скоро можно будет указать, что передаваемый аргумент должен быть скаляром. Жаль только, что появилась только возможность указать определённый тип. Если «object» указать можно, то «scalar», к сожалению, нет. Это странно. Придётся указывать явно:

function test3(string $var) {}

Что поможет снизить количество ошибок в отдельных случаях, но как быть, если мне такая жёсткость ни к чему, если я хочу оставить возможность преобразования типов, там где это сделано хорошо (преобразование типа «array» в «string» в PHP сделано бессмысленно, посмотрите на Perl, там это имеет смысл)? Да и как мне указать, что мне всё равно — придёт int или float? Видимо, только явным приведением типа при вызове, а про возврат значения по ссылке, в этом случае, придётся забыть.

В отдельных случаях, хотелось бы, чтобы передав объект в такой типизированный параметр, у объекта дёрнулся метод __toString, а то и __toNumber, если указано, что должен быть передан числовой скаляр.

Надеюсь, не одному мне этого хочется и Илья продолжит работу над патчем.

Добавлено через несколько минут: прочитал комментарии, оказывается идут дискуссии о добавлении ключевых слов «scalar» и «numeric». Кроме того, Илья рассуждает и о преобразованиях типов в рамках type hinting. Ура.

Читайте также

PHP7: scalar hinting
Продолжаю потихоньку наблюдать за развитием ПХП 7. Сегодня с утра выписывал из репозитория и компилировал новую версию, заметил, что в  языке появилось указание типов для скаляров — поддерживаются int, float, string и bool.
2015

Комментарии 8

jimidini (jimidini.ya.ru) № 3
не торопись. ещё откатить могут. там есть много сторонников альтернативного подхода и голосования ещё не было
jimidini (jimidini.ya.ru) № 7
Комментарий для Евгения Степанищева:

интереснее, что в php-trunk добавили http://wiki.php.net/rfc/functionarraydereferencing
вот это действительно праздник

p.s. не знаю видел ты или нет, я завёл англоязычный твиттер технической направленности http://twitter.com/jimi_dini
Евгений Степанищев (bolknote.ru) автор № 8

Комментарий для jimidini.ya.ru:

интереснее, что в php-trunk добавили http://wiki.php.net/rfc/functionarraydereferencing

вот это действительно праздник
О!!!! Ура :)

p.s. не знаю видел ты или нет, я завёл англоязычный твиттер технической направленности http://twitter.com/jimi_dini

Я твиттером не пользуюсь, но зафолловил.