这个真的扰乱了我的头脑:
每当我尝试键入传递给类型为'string‘的函数的变量类型时,如下所示:
public function __call( string $name , array $args ) {
...
}我得到以下错误:
可捕获的致命错误:传递给ClassName::__call()的参数1必须是字符串的实例,即在line_number上的php_file_name中给出的字符串
哈?“必须是字符串的实例,字符串给定”?我不是传递了一根线吗?我真的不明白这个错误信息。
现在我的解决方案一直是这样的:
public function __call( $name , array $args ) {
if (!is_string($name)) { throw new Exception('$name must be a string');
}然而,我的问题是,是否有一种方法可以在方法定义中而不是在方法本身中对其进行实际键入?
发布于 2011-09-10 18:20:00
在php中,可以将函数参数强制为数组或对象(输入提示)。因此,您的操作只是接受第一个参数的" string“对象,而不是string类型的变量。
类型提示只能是对象和数组(因为PHP5.1)类型。不支持使用int和string提示的传统类型。
更多信息在这里:http://www.php.net/manual/en/language.oop5.typehinting.php
回答你的问题:通常,你不能!
发布于 2011-09-10 18:35:13
PHP不支持标量类型提示。只适用于对象和数组。PHP注释中的某个人编写了一种使用标量类型暗示的方法。因为此错误的类型为catchable fatal error。您可以定义您自己的错误处理程序,它允许您在某些条件下继续处理此错误。
http://www.php.net/manual/de/language.oop5.typehinting.php#83442
然而,它很慢,我不建议使用它。
https://stackoverflow.com/questions/7373624
复制相似问题