簡體   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