PossiblyNullArgument
関数が期待していないにもかかわらず、nullの可能性のある値で関数を呼び出そうとした場合に発生します。
<?php
function foo(string $s): void {}
foo(rand(0, 1) ? "hello" : null);
よくある問題のケース
if
内での関数呼び出しの使用
<?php
if (is_string($cat->getName()) {
foo($cat->getName());
}
これは失敗します。なぜなら、$cat->getName()
の後続の呼び出しが常に同じ結果を返すという保証がないからです。
可能な解決策
変数を使用する:
<?php
$catName = $cat->getName();
if (is_string($catName) {
foo($catName);
}
unset($catName);
または、関数の宣言に@psalm-mutation-free
を追加する。
if
の後に別の関数を呼び出す
<?php
if (is_string($cat->getName()) {
changeCat();
foo($cat->getName());
}
これは失敗します。なぜなら、psalmはchangeCat()
が実際に$cat
を変更するかどうかを知ることができないからです。
可能な解決策
ユーザーノート
+ ユーザーノートを表示する
ユーザーノートについて
PHPマニュアルのように、マニュアルを補足する情報の共有を目的としてます。
- 掲示板ではありません。議論、質問、別のノートへの返信はできません。
- バグや改善要望、または翻訳の Issue は、該当する GitHub リポジトリで報告してください。
- ノートは事前の通知なく削除される場合があります。
- Giscussのコメントシステムを流用しています。そのためノートとしては最適化されてないことをご了承ください。
- 保証されていません。投稿したノートが消失する事やノート機能全体が閉鎖する可能性があります。
- お願い:いいノートにはup voteを、この規約に違反しているノートを見つけた場合は、優しくdown voteしてください。