这种类型提示仅适用于验证函数参数;你不能声明 PHP 变量必须始终是某种类型。这意味着在您的示例中,当调用“blah”时, $bur 必须是 Bur 类型,但 $bur 可以在函数内重新分配给非 Bur 值。
类型提示仅适用于类或接口名称;例如,您不能声明参数必须是整数。
PHP 类型提示与 Java 不同的一个令人烦恼的方面是不允许使用 NULL 值。因此,如果您希望选择传递 NULL 而不是对象,则必须删除类型提示并在函数顶部执行类似以下操作:
assert('$bur === NULL || $bur instanceof Bur');
EDIT:最后一段从 PHP 5.1 起不再适用;现在,即使有类型提示,您也可以使用 NULL 作为默认值。
EDIT:您还可以安装SPL 类型处理 http://php.net/manual/en/book.spl-types.php扩展,它为您提供字符串、整数、浮点数、布尔值和枚举的包装类型。
EDIT:从 PHP 5.1 开始,您还可以使用“array”,从 PHP 5.4 开始,您还可以使用“callable”。
EDIT:从 PHP 7.0 开始,您还可以使用“string”、“int”、“float”和“bool”。
EDIT: 从 PHP 7.4 开始,您可以将类/接口/特征的成员变量声明为特定类型 like public int $a;
,并且以这种方式声明的变量不能分配给其他类型的值。您还可以使用联合类型 https://php.watch/versions/8.0/union-types例如string|int
从 PHP 8.0 开始,您可以在 PHP 8.1 开始的联合类型中使用类。
https://www.php.net/manual/en/language.types.declarations.php https://www.php.net/manual/en/language.types.declarations.php