PHPStan
https://gyazo.com/677265b16b7e6cb8d66c6632eb3dc1da
GPT-4.icon
PHPStanは、以下の順序で型情報を参照します。
PHPの型宣言が存在する場合、それを優先して解析します。
型宣言のない部分については次にPHPDocを参照します。
PHPの型宣言では不足している情報(例えば配列の中身の型やジェネリクス的な表記など)をPHPDocから補足します。
コードの実際の振る舞いを推論:
型宣言やPHPDocの情報が不足している場合、コードの実際の操作を解析して型を推論します。
仕様がグッチャグチャだなmrsekut.icon
公式の型の表現力がからPHPDocが別に必要になり、PHPStanはその両方を見て検査している
公式のやつだけ実行時にも影響がある、というややこしさもある
type declarationではarrayとしか書けないが、PHPDocで中身を書くやつとか
code:php
/**
* @param User[] $users
*/
function foo(array $users) { ... }
酷い
基本的な書き方
level
検査のきびしさ
0~10を指定できる
小さい数字で検査して、エラーを消して徐々に上げていく感じ