我正确使用了 Laravel 的外观,PhpStorm 给了我警告,这是为什么呢?
在图像上,我将“x”指向某些......类型的数据?在我使用的函数中,为什么我有这些?如何删除它们?
1 回答
在 Laravel 中使用外观
你没有使用门面。您已经导入了类,在第一个类别中,IDE 告诉您 get 方法不是静态方法。
只需导入外观(如果存在)。
请参阅有关 Facades 的文档以了解有关如何使用可用外观以及如何定义自己的外观的更多信息。
外观类应如下所示:
use Illuminate\Support\Facades\Facade;
class Cache extends Facade
{
/**
* Get the registered name of the component.
*
* @return string
*/
protected static function getFacadeAccessor()
{
return 'cache';
}
}
其中'cache'
字符串是服务容器绑定的名称并在服务提供者中定义,如下所示:
use App\Cache\MyCache;
use Illuminate\Support\ServiceProvider;
class CacheServiceProvider extends ServiceProvider
{
/**
* Register bindings in the container.
*
* @return void
*/
public function register()
{
$this->app->singleton('cache', function ($app) {
return new MyCache();
});
}
}
使用 Facades 修复警告
话虽如此,我已经厌倦了警告以及缺少的自动完成和外墙突出显示,所以我还寻找一种方法来解决这些问题。
我遇到了laravel-ide-helper,它添加了 Laravel CLI 命令,这些命令生成的 php 文件仅用于由您的 IDE 解析。
安装
使用以下命令使用 composer 要求这个包:
composer require barryvdh/laravel-ide-helper
更新 composer 后,将服务提供者添加到 providers 数组中
config/app.php
Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class
, 要仅在开发系统上安装此软件包,请将--dev
标志添加到您的 composer 命令中:composer require --dev barryvdh/laravel-ide-helper
在 Laravel 中,您可以在方法中将以下代码添加到文件中,而不是在文件中添加服务 提供
config/app.php
者 :app/Providers/AppServiceProvider.php
register()
public function register() { if ($this->app->environment() !== 'production') { $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class); } // ... }
这将允许您的应用程序在非生产环境中加载 Laravel IDE Helper。
Laravel Facades 的自动 phpDoc 生成
您现在可以自己重新生成文档(以备将来更新)
php artisan ide-helper:generate
注意:
bootstrap/compiled.php
必须先清除,所以php artisan clear-compiled
在生成之前(和php artisan optimize
之后)运行。您可以配置您
composer.json
在每次提交后执行此操作:"scripts":{ "post-update-cmd": [ "Illuminate\\Foundation\\ComposerScripts::postUpdate", "php artisan ide-helper:generate", "php artisan ide-helper:meta", "php artisan optimize" ] },
.phpstorm.meta.php
和_ide_helper.php
文件将被生成并应添加到您的文件中,.gitignore
因为您不想提交这些文件。