繁体   English   中英

PHP类型提示错误?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM