Я пытался заставить своих Netbeans автозаполнять PHP , и я узнал, что этот код действителен в PHP:
function blah(Bur $bur) {}
Несколько вопросов:
Этот тип-подсказка работает только для проверки аргументов функции; вы не можете объявить, что переменная PHP всегда должна иметь определенный тип. Это означает, что в вашем примере $ bur должен иметь тип Bur, когда вызывается «blah», но $ bur может быть переназначен в значение non-Bur внутри функции.
Тип-подсказка работает только для имен классов или интерфейсов; вы не можете объявить, что аргумент должен быть целым числом, например.
Один из раздражающих аспектов типа PHP-намека, который отличается от Java, заключается в том, что значения NULL недопустимы. Поэтому, если вам нужна опция передачи NULL вместо объекта, вы должны удалить подсказку типа и сделать что-то вроде этого в верхней части функции:
assert('$bur === NULL || $bur instanceof Bur');
EDIT: этот последний абзац не применяется с PHP 5.1; теперь вы можете использовать значение NULL в качестве значения по умолчанию, даже с подсказкой типа.
EDIT: вы также можете установить расширение SPL Type Handling , которое дает вам типы обертки для строк, ints, float, booleans и перечислений.
EDIT: вы также можете использовать «массив» с PHP 5.1 и «вызываемый» с PHP 5.4.
EDIT: вы также можете использовать «string», «int», «float» и «bool» с PHP 7.0.
/** * @var string */ public $variable = "Blah";
Это называется намеком типа, добавленным с PHP 5. Это не совсем то, что вы можете ожидать, если вы исходите с такого языка, как Java. Это вызывает ошибку, если вы не проходите в ожидаемом типе. Вы не можете вводить примитивы-подсказки, хотя (нет int $ bur).
# 2: (…) Как я могу объявить тип переменной в PHP, если у меня нет функции?
Недавно я слышал о « settype () » и « gettype () » в PHP4 & 5
Вы можете принудительно изменять тип переменной в любое время
От PHP.net:
bool settype (mixed & $ var, string $ type)
параметры
var: Переменная преобразуется. type: Возможные значения типа:
[: D Первый визит, первый комментарий …]
Действительно ли это налагает какие-либо ограничения на то, какой тип переменной я могу передать методу бла?
Это называется намеком типа . Согласно документации PHP, с которой я только что связался, да, она налагает ограничения на тип аргумента: « Неспособность удовлетворить подсказку типа приводит к уловимой фатальной ошибке ».
Как я могу объявить тип переменной в PHP, если у меня нет функции?
Чтение жонглирования . Вы не можете явно указать тип переменной в PHP, его тип определяется контекстом, в котором он используется.