[解決済み】タイプヒンティング使用時にNULL引数を渡せない
2022-04-07 20:46:52
質問
次のようなコードです。
class Type {
}
function foo(Type $t) {
}
foo(null);
が実行時に失敗しました。
PHP Fatal error: foo()に渡される引数1はNULLであってはなりません。
なぜ他の言語と同じようにnullを渡すことが許されないのでしょうか?
解決方法は?
PHP 7.1 以降 (2016年12月2日リリース)
変数を明示的に宣言することで
null
この構文で
function foo(?Type $t) {
}
という結果になります。
$this->foo(new Type()); // ok
$this->foo(null); // ok
$this->foo(); // error
つまり、オプションの引数が必要な場合は、次のような規約に従えばよいのです。
Type $t = null
一方、引数を作る必要がある場合は
null
とその型は、上の例のようにすればよい。
もっと読む ここで .
PHP 7.0 またはそれ以前
のようなデフォルト値を追加する必要があります。
function foo(Type $t = null) {
}
そうすれば、NULL値を渡すことができます。
に関するマニュアルのセクションに記載されています。 型宣言 :
宣言を受け入れるようにすることができます
NULL
の値は、パラメータのデフォルト値がNULL
.
関連
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み] $wpdb->update または $wpdb->insert を実行すると、引用符の前にスラッシュが追加される
-
[解決済み】「Fatal error: Class 'MySQLi' not found "を解決するには?
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み] Long-Polling、Websocket、Server-Sent Events (SSE)、Cometとは何ですか?
-
[解決済み] PHPで有用なエラーメッセージを得るにはどうしたらよいですか?
-
[解決済み] タイプヒンティングを使用しているとき、関数にデフォルトのパラメータを追加するにはどうすればよいですか?
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み】PHP7以前の「文字列のインスタンスでなければならない、文字列が与えられている」を解決するにはどうすればよいですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】phpのob_start()の使い道は?
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】Laravel 5.2 Storage::makeDirectory($dir) でディレクトリが作成されない。
-
[解決済み】警告:mysql_fetch_array()はパラメータ1がリソースであることを期待、ブール値は[重複]で与えられる]
-
[解決済み】PHP フェイタルエラー。未定義の関数mssql_connect()をコールしています。
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み】Wordpressの子テーマのstyle.cssが効かない。
-
[解決済み] mysqli_fetch_assoc() は、パラメータ 1 が mysqli_result であることを期待し、boolean が与えられる [重複] 。