如何在PhpStorm中避免变量类名调用静态方法的检查警告?
解决PhpStorm中“Method 'create' not found in string”警告的方法
以下几种方法可以在不关闭全局检查的前提下消除该警告:
使用PHPDoc注解指定类类型
给变量添加明确的类型注解,让PhpStorm识别出字符串对应的类:/** @var class-string<\App\Models\User> $class_name */ $class_name = '\App\Models\User'; $class_name::create($attributes);也可以用更简洁的写法(兼容PHP 7及以上):
$class_name = '\App\Models\User'; /** @var \App\Models\User $class_name */ $class_name::create($attributes);这类注解会告诉PhpStorm,该变量对应的是指定类的类名字符串,从而正确识别静态方法。
通过类型判断辅助识别
借助is_a函数做类名校验,让PhpStorm自动推断类型:$class_name = '\App\Models\User'; if (is_a($class_name, \App\Models\User::class, true)) { $class_name::create($attributes); }第三个参数设为
true时,允许传入类名字符串进行校验,PhpStorm会通过这个条件判断识别出变量对应的类。单行忽略特定检查
如果仅需临时忽略这一行的警告,可添加PhpStorm专属的忽略注解:$class_name = '\App\Models\User'; // noinspection PhpUndefinedMethodInspection $class_name::create($attributes);该注解只会屏蔽当前行的“方法未找到”检查,不会影响全局的代码检查规则。
内容的提问来源于stack exchange,提问作者Yevgeniy
相关产品推荐
相关产品推荐

