たとえばこんなコードで
<?php $sanctum_user = Auth::guard('sanctum')->user(); if (in_array(HasApiTokens::class, class_uses($sanctum_user))){ // @phpcs:ignore $sanctum_user->tokens()->delete(); }
Undefined method 'tokens'.intelephense(P1013)
とか出る。ChatGPTに聞いて // @phpcs:ignore
とか入れたが勿論こんなのは屁のツッパリにもならない。
ググっても、WarningをOFFにするんだよとか「それ違うだろ。力技はいやなんだよ。」って回答しか目につかない。
力技との誹りは免れないが call_user_funcを使う
call_user_funcとはこんなんな。もはや古のPHPerしか知らない関数かもしれないが。
<?php class Foo { function foo($param = [1,2,3]){ var_dump($param); return $this; } function bar() { echo "bar\n"; } } $f = new Foo; call_user_func([$f, 'foo'])->bar();
ということで、さっきのコードは
<?php $sanctum_user = Auth::guard('sanctum')->user(); if (in_array(HasApiTokens::class, class_uses($sanctum_user))){ // @phpcs:ignore call_user_func([$sanctum_user, 'tokens'])->delete(); }
となる。これでWarningが出ない。むしろ可読性下がっとるやないか!!!との意見はその通りである!!