我使用的是最新版本的PhpStorm(2022.3.1)和Laravel 9+,这不是一个大问题,而是一个主要的眼中钉。
出于某种原因,当我使用模型创建一个自定义属性时,如下所示:
public function getFormattedStartDateAttribute(): string
{
if (!$this->start_date) {
return 'TBD';
} else {
return $this->start_date->format('M. d, Y');
}
}
并在视图中使用,如下所示:
- 日期
{{ $event->formattedStartDate }}
- 日期
{{ $event->formatted_start_date }}
PhpStorm仍然说方法有no usages
?
图片:
有什么办法可以解决这个问题吗?我试过重新索引我的项目。这是一个新的功能,称为代码视觉。
1条答案
按热度按时间rta7y2nd1#
这个问题很容易解决,你可以使用
barryvdh/laravel-ide-helper
,然后运行php artisan ide:model
,这将检查模型并创建一个PHPDoc块(你可以添加选项,并在同一个模型文件或一个只有这个PHPDock块的新文件中创建它们),PHPSorm将读取这个doc块,并知道当你调用attributeWhatever
时是什么类型。它将在您的案例中添加以下内容:
这样,任何能够理解PHPDock块的IDE都将理解,当您执行
$class->formattedStartDate
时,您引用的是那个块,它的类型为string
。但是,没有IDE(除非使用我不知道的插件)会理解
getFormattedStartDateAttribute
-〉formattedStartDate
,所以您仍然会得到getFormattedStartDateAttribute
的no usages
,但至少您可以跟踪formattedStartDate
并对其执行任何您想要的操作。一个快速提示,如果您正在使用Laravel 9+,请将代码更改为:
收件人:
为什么?因为使用
getFormattedStartDateAttribute
是旧的方法,Laravel 9+使它变得更容易,阅读有关访问器的信息。可以看到
getXXXXAttribute
和setXXXXAttribute
甚至不再出现在文档中。