問題タブ [phpstan]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - メソッド ... 配列を返す必要がありますただし、配列を返します('key1'=>SomeObject|null,'key2'=>SomeObject2|null)
私は PHPStan を初めて使用し、理解できない問題に遭遇しました。
したがって、次のような配列を返すはずの関数がありますarray<a|b|c|d..., mixed>
(a、b、c、dはすべてクラス定数です)が、関数では、配列は次のようになります。
次のエラーが表示されます。
Method doSomething() should return array<a|b|c|d...,mixed> but returns array('key1'=>SomeObject|null,'key2'=>SomeObject2|null)
この配列が @return doc タグで定義されている配列に「似ている」と PHPStan に「信じさせる」にはどうすればよいですか?
私は何を試しましたか?
/**@var array<SomeConstants::*> $array**/
/**@phpstan-var array<SomeConstants::*> $array**/
どちらも問題なく動作しますが、私のコード レビュー担当者によると、配列に存在しないキーが存在すると PHPStan に強制するだけなので、これは「汚い」ソリューションです...
methods - PHP Laminas PHPStan - 未定義メソッドの呼び出し Laminas\Stdlib\RequestInterface::isPost()
laminas プロジェクトで phpstan を実行していて、エラーが発生しています。
例として、コントローラーには正常に動作する標準コードがあります。
$request = $this->getRequest();
if ($request->isPost()) { ... }
ただし、phpstan は不平を言っています。
未定義のメソッド Laminas\Stdlib\RequestInterface::isPost() の呼び出し
問題は、getRequest() が実際には Laminas\Http\Request から isPost 関数を継承する Laminas\Http\PhpEnvironment\Request のインスタンスを返しているようです。ただし、この関数は RequestInterface では定義されていません。
1 つの解決策は RequestInterface で isPost を定義することですが、ベンダー コードの変更は避けたいと思います。
これを回避するより良い方法はありますか?
php - PHPで関数のパラメータをタイプヒントする方法
スイッチに型が混在しているため、この関数の戻り型の取得に問題があります。私は混合を使用しましたが、爆発しました。ユニオン型にはstring|bollといくつかの型を使用しました。
すべてを試しましたが、CI/CD パイプライン (AWS) に合格しませんでした
ERROR 以下はエラーです