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