1. ホーム
  2. php

[解決済み】PHP7以前の「文字列のインスタンスでなければならない、文字列が与えられている」を解決するにはどうすればよいですか?

2022-04-09 03:33:36

質問

以下は私のコードです。

function phpwtf(string $s) {
    echo "$s\n";
}
phpwtf("Type hinting is da bomb");

その結果、このようなエラーになります。

Catchable fatal error: phpwtf() に渡される引数 1 は文字列のインスタンスでなければなりません。

PHPが目的の型を認識し、同時に拒否するのは、少しばかりオーウェル的です。 ライトは5つだ、くそ。

PHPの文字列のタイプヒンティングに相当するものは何ですか?ここで起こっていることを正確に説明している答えにはボーナス考慮があります。

どのように解決するのですか?

PHP 7 より前のバージョン タイプヒンティング は、オブジェクトと配列の型を強制するためにのみ使用できます。スカラー型はタイプヒントになりません。この場合、オブジェクトのクラス string が期待されているのに、それに(スカラー)である string . エラーメッセージは面白いかもしれませんが、そもそもうまくいくはずがないのです。動的型付けシステムを考えると、これは実はある種の変態的な意味を持つ。

にしかできません。 手動 タイプヒント"スカラー型。

function foo($string) {
    if (!is_string($string)) {
        trigger_error('No, you fool!');
        return;
    }
    ...
}