Laravel 门面自动补全工具 laravel-ide-helper

2019-08-27 05:43:13

参考地址 Laravel 门面自动补全工具 laravel-ide-helper

简介

当我们在 PhpStorm 编辑器中,开发 Laravel 框架的项目时,很多类方法都不能自动补全和定位,比如 Facade 门面的方法,DB::table()、Route::get() 等。


laravel-ide-helper 工具可以解决这个问题。


安装和配置

首先,通过 composer 安装 laravel-ide-helper


composer require --dev barryvdh/laravel-ide-helper:2.4.3

然后,注册服务提供者。有两种注册方式:


在 config/app.php 的 providers 数组中注册服务提供者


Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,

在 app/Providers/AppServiceProvider.php 的 register() 方法中注册。


public function register()

{

    if ($this->app->environment() !== 'production') {

        $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);

    }

    // ...

}

推荐使用第二种方式,因为它只会在非生产环境中加载 Laravel IDE Helper。


自动生成 Laravel 门面对应的 phpDoc

注意:在生成 phpDoc 之前,我们需要先清除 bootstrap/compiled.php 文件。


清除命令是:


php artisan clear-compiled

然后,执行下面的命令生成 phpDoc 文件。


php artisan ide-helper:generate

生成的 phpDoc 就是项目根目录下的 _ide_helper.php 文件,里面包含了 Laravel 门面的相关信息。


为了方便,你可以在 composer.json 文件中作如下配置:


"scripts":{

    ...

    "post-update-cmd": [

        "Illuminate\\Foundation\\ComposerScripts::postUpdate",

        "php artisan ide-helper:generate",

        "php artisan ide-helper:meta"

    ]

},

你还可以发布配置文件,以便修改默认的实现。


php artisan vendor:publish --provider="Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider" --tag=config

生成器会尝试去识别真正的类,如果找不到,你可以在配置文件中定义。


有些类需要数据库连接,如果没有相应的数据库连接,某些门面可能无法包含进来。


你可以选择要包含的辅助函数文件,默认该选项并未开启,但是你可以通过 --helpers (-H) 选项进行覆盖。


默认已经引入了 Illuminate/Support/helpers.php ,当然你还可以在配置文件中添加自己的辅助函数文件。


关于 laravel-ide-helper 的更多功能,请参考 https://github.com/barryvdh/laravel-ide-helper



  • 2017-03-13 12:07:19

    JavaScript原型与原型链分析

    JavaScript没有类的概念,但几乎所有的东西又是基于对象的,同时也能实现继承,这就是js跟其他OOP语言最大的不同之处,这也是js最难理解的一块。下面我来说说我个人的理解。

  • 2017-03-15 07:43:19

    NodeJS服务器”热部署“代码,实现动态调试

    如果你有 PHP 开发经验,会习惯在修改 PHP 脚本后直接刷新浏览器以观察结果,而你在开发 Node.js 实现的 HTTP 应用时会发现,无论你修改了代码的哪一部份,都必须终止Node.js 再重新运行才会奏效。这是因为 Node.js 只有在第一次引用到某部份时才会去解析脚本文件,以后都会直接访问内存,避免重复载入,而 PHP 则总是重新读取并解析脚本(如果没有专门的优化配置)。

  • 2017-03-16 13:37:58

    mysql中如何使用INSERT一次性插入多条记录

    看到这个标题也许大家会问,这有什么好说的,调用多次INSERT语句不就可以插入多条记录了吗!但使用这种方法要增加服务器的负荷,因为,执行每一次 SQL服务器都要同样对SQL进行分析、优化等操作。