[英]PHP type hinting error?
我刚刚得到了这个致命的错误
可捕获的致命错误:传递给File :: __ construct()的参数1必须是整数的实例,给定整数,在第9行的/home/radu/php_projects/audio_player/index.php中调用,并在/ home / radu / php_projects中定义第7行/audio_player/php/File.php
所以,有班级
class File{
public $id;
public $name;
public $file_paths;
public function __construct(integer $id=null, string $name=null, array $file_paths=null)
{
foreach(func_get_args() as $name => $val)
{
$this->$name = $val;
}
}
}
这是触发错误的代码
$file = new File(1, "sound", array());
我错过了什么或者这种PHP类型暗示有什么不好的东西?
据我所知,你不能在PHP中使用整数类型提示。 但是,PHP.net中的某个人有这个有用的评论:
http://www.php.net/manual/en/language.oop5.typehinting.php#83442
如果您确实需要此功能,这显然是一种适用于您的解决方法。
您不能强制参数为整数。
看这里language.oop5.typehinting :
PHP 5引入了类型提示。 函数现在能够强制参数为对象,接口,数组(自PHP 5.1起)或可调用(自PHP 5.4起)。[...]
类型提示不能与标量类型 (如int或string)一起使用。 [...]
在这里, language.types.intro ,PHP标量类型是:
\n - 布尔值\n - 整数\n - 浮点数(浮点数,又称双数)\n - 字符串\n
由于这可能会产生误导,因为搜索引擎中的答案仍然很高。
PHP 7确实为标量类型引入了类型提示
在PHP 5中没有标量类型提示,因此integer
类型提示被认为是类类型提示。
更多参考http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.