тип подсказки и причина (ы) их ограничения - PullRequest
5 голосов
/ 20 октября 2011

Являются ли object и array единственными типами, разрешенными для хинтинга типов?

Кроме того, в документации утверждается, что стандартные типы string и int также не могут быть намеками на тип.

И это делает меня более любопытным. В чем причина разрешения только двух подсказок типа и отбрасывания стандартных подсказок?

Заранее спасибо!

Ответы [ 2 ]

8 голосов
/ 20 октября 2011

PHP 5.3 в настоящее время поддерживает только шрифты array и ClassName.
Предстоящая версия PHP 5.4 также будет поддерживать callable шрифты.

Причина, по которой скалярные шрифты в настоящее время не поддерживаются, заключается в том, что их поведение на языке со слабой типизацией неясно:

  • Должна ли быть выдана ошибка, даже если это просто разница между 1 и '1'? -> Против духа PHP
  • Должны ли применяться обычные преобразования PHP? В этом случае 'hallo' даст 0 для int typehint -> Unintuitive
  • Должны ли применяться более строгие правила приведения?

Это причина, по которой реализация скалярной верстки шрифтов была исключена из PHP 5.4 - по этому вопросу не было единодушия.

0 голосов
/ 20 октября 2011

Да, только массив и объект являются типами, разрешенными для хинтинга типа.

http://www.php.net/manual/en/language.oop5.typehinting.php

См. Последнюю строку:

Тип Подсказки могут быть толькотип объекта и массива (начиная с PHP 5.1).Подсказка традиционного типа с использованием int и string не поддерживается.

...