讨论数量:
这个很难,因为PhpStorm的跳转是通过“静态分析”来推导的,而你这个app()
这里是个运行时的东西,PhpStorm
并不知道app()
执行后返回的是什么对象,所以无法定位到find
函数;也就说app()
需要在执行时才知道他返回的是个什么对象,PhpStorm
无法处理。
/** @var WorkOrderCategoryService */
$service = app(WorkOrderCategoryService::class);
$service->find($id);
我一般是写注释
/** @var WorkOrderCategoryService $categoryService */
$categoryService = app(WorkOrderCategoryService::class);
$category = $categoryService->find($categoryId);
方案1(简单粗暴)
安装 Laravel Idea
插件
方案2
使用 composer
命令安装 laravel-ide-helper 插件
composer require barryvdh/laravel-ide-helper --dev
方案3(不推荐)
使用注释来指定 PHPStorm 使用类方法
/** @var User $user */
$user = app(User::class);
$user-> // 调用提示
这里需要指定一个变量,我也不清楚是不是必须,不常用。
安装这个包:barryvdh/laravel-ide-helper: IDE Helper for Laravel
然后执行一下:php artisan ide-helper:meta
会自动生成 meta 文件,重启 PHPSTORM 后就可以了。
如果你只是 app 这个一个方法的话,不想安装这个包,也可以自己手动创建一个 .phpstorm.meta.php
文件
.phpstorm.meta.php
<?php
namespace PHPSTORM_META {
override(
app(0),
map([
'' => '@',
])
);
}
然后重启 PHPSTORM
安装这个包:barryvdh/laravel-ide-helper: IDE Helper for Laravel
然后执行一下:
php artisan ide-helper:meta
会自动生成 meta 文件,重启 PHPSTORM 后就可以了。如果你只是 app 这个一个方法的话,不想安装这个包,也可以自己手动创建一个
.phpstorm.meta.php
文件.phpstorm.meta.php
然后重启 PHPSTORM