7

この致命的なエラーが発生しました

キャッチ可能な致命的なエラー: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タイプのヒントに何か悪いことがありますか?

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(浮動小数点数、別名double)
- ストリング
于 2013-06-11T15:44:42.090 に答える