1

私はこの方法を使用しようとしています:

public function setMessage(string $message){
    $this->message = $message;
}

次に、このエラーが発生します:

キャッチ可能な致命的なエラー: notifier::setMessage() に渡される引数 1 は文字列のインスタンスである必要があります。

stringどうやらPHPはクラス名として解釈しています。そのような宣言を行うための解決策のようなものはありますか?

4

2 に答える 2

5

タイプヒントは、配列を除いて、オブジェクトでのみ使用できます。

マニュアルから:

型ヒントは、intやstringなどのスカラー型では使用できません。特性も許可されていません。

于 2013-02-08T10:07:11.650 に答える
1

PHP は緩く型付けされた言語であり、実際には型を気にせず、とにかく推測します。関数宣言で変数をクラスにのみ制限できるため、を削除するstringとすべて問題ありません。:)

本当に文字列であることを確認したい場合は、gettype()を使用するか、変数を文字列にキャストします。

注 (PHP.net の type-juggline から):

変数を文字列にキャストする代わりに、変数を二重引用符で囲むこともできます。

$foo = 10;            // $foo is an integer
$str = "$foo";        // $str is a string
$fst = (string) $foo; // $fst is also a string
于 2013-02-08T10:06:31.960 に答える