7

我刚收到这个致命错误

可捕获的致命错误:传递给 File::__construct() 的参数 1 必须是整数的实例,整数给定,在第 9 行的 /home/radu/php_projects/audio_player/index.php 中调用并在 /home/radu/php_projects 中定义/audio_player/php/File.php 在第 7 行

所以,有课

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 类型提示有什么不好的地方?

4

3 回答 3

3

因为这可能会产生误导,而且这个答案在搜索引擎中仍然很高。

PHP 7 确实为标量类型引入了类型提示

PHP 5 中没有标量类型提示,因此integer类型提示被认为是类类型提示。

更多参考http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration

于 2017-09-26T11:58:41.843 回答
2

据我所知,您不能在 PHP 中使用整数类型提示。但是,PHP.net 中的某个人有这样有用的评论:

http://www.php.net/manual/en/language.oop5.typehinting.php#83442

如果您确实需要此功能,这显然是一种适合您的解决方法。

于 2013-02-02T18:04:01.867 回答
2

您不能强制参数为整数。

看这里language.oop5.typehinting

PHP 5 引入了类型提示。函数现在能够强制参数为对象 [...]、接口、数组(自 PHP 5.1 起)或可调用(自 PHP 5.4 起)。

[...]

类型提示不能用于标量类型,例如 int 或 string。[...]

在这里language.types.intro,PHP 标量类型是:

- 布尔值
- 整数
- float(浮点数,又名双精度)
- 细绳
于 2013-06-11T15:44:42.090 回答