🐥
PHP Intelephense(VS Code拡張機能)の静的解析が局所的におかしいときの局所調整の件
はじめに
return redirect()->route('xxx.index');
のコードで、redirect()のところで、エディタ上、赤ニョロ(赤の破線)で怒られた
なぜか、他のチームメンバーは、「PHP Intelephenseの静的解析」を使ってるけど
同じ事象はおきない。
解決の方向性
幸いなことに、
「 redirect() 」ところだけなので、
PHP Intelephense自体を消したり、無効にするようなことをしたくなく
該当のものだけ、局所的に対応したい
具体的な解決法
下記のようにすれば解消し、エラーでなくなりました
.vscode/intelephense-laravel-stubs.php
<?php
declare(strict_types=1);
/**
* Intelephense 用ローカルスタブ(実行時には読み込ませない)
* redirect() の戻り値推論が null 扱いになる P1006 を潰す目的
*/
namespace {
if (!function_exists('redirect')) {
/**
* 引数なし redirect(): Redirector
* @return \Illuminate\Routing\Redirector
*/
function redirect()
{
}
}
if (!function_exists('route')) {
/**
* route() 自体の型も補強(必要なら)
* @param string $name
* @param mixed $parameters
* @param bool $absolute
* @return string
*/
function route($name, $parameters = [], $absolute = true)
{
}
}
}
これは、git上、コミット/プッシュせず、ローカルだけ置いておくやり方でよいだろう
同じように、今後「PHP Intelephense」で局所的に、怒られるけど
別に、動作に問題内ようなもの、どう考えてもおかしいと思われないもの
他のチームメンバーは、エディタで怒られないなど
そういうものが、局所的に、今後あれば、
★ この記事のURLをAIに吸わせて ★
怒られるコードの種類と、当記事と同様の解決策をだして
と、AIに依頼し、今後、解決を図ることにした
以上
AIに投げるときの文章のひな形
当記事のURLの
https://zenn.dev/tazzae999jp/articles/ae30b7a34c6b94
を指定する形で、下記のような質問文をAIに投げたら、
よいでしょう。
下記にひな形をしめします。
コピペした後、
XXXX や、xxx のあたりを、その時の状況にあわせて
変更調整したものを、AIに投げて、返ってきた回答を
.vscode/intelephense-laravel-stubs.php
貼り付ければ、解決できると思います。
https://zenn.dev/tazzae999jp/articles/ae30b7a34c6b94
の記事を読み込んで、まず、完全理解してください
この記事のやり方を真似て、
.vscode/intelephense-laravel-stubs.php
に書くべき、スタブのコードを書いてください。
下記に示す、問題点を解決し、PHP Intelephenseの静的解析が効くようにしてください
問題点
実行時には、動作に問題が無いようですが、
下記のPHP Intelephenseが理解できず、
エディタ上で、局所的に、赤ニョロ(赤の破線)でエラー表示され
該当部分のコード補完も認識してくれない
これを局所的に解決したい。
Laravel のバージョン XXXXX
PHP のバージョン XXXX
のアプリのコードである。
XXXクラスのXXXメソッドを利用してるコードで、PHP Intelephenseが理解できず、
赤ニョロ(赤の波線)がエディタ上に表示され、
xxxxxxxxxxxxxxxxxx のエラーメッセージがでます。
上記に示したものの、定義情報としてのあるべき姿をまずは、きちんと、
公式ドキュメントや、GitHubのソースコードを参照しながら、
きちんと、確認したうえで、スタブコードとしてどうあるべきかを
100%確信が持てるまで、徹底的に調べ上げたうえで、回答をだしてください
安直な形で、回答を出さないで下さい。100%嘘なしで、100%正確に、100%の確信が持てるまで
徹底的に調べ上げて、「 100%嘘なしで、100%正確に、100%の確信 」の形が、わかったときに
はじめて、回答を書きはじめてください。それまでは、絶対に調査を打ち切らないでください。
Discussion