代码提示_PHPStorm 支持 Laravel Facades 的代码提示

f31174f0e67d51fe3da33614b6aeef2a.png

代码补全
安装
生成
基本原理

代码补全

使用插件 barryvdh/laravel-ide-helper 可以让 PHPStorm 支持 Laravel 的代码补全。插件的 GitHub 地址是: https://github.com/barryvdh/laravel-ide-helper。

使用起来很简单,过程如下:

安装

1composer require --dev barryvdh/laravel-ide-helper

生成

1php artisan ide-helper:generate

执行生成后,会在项目目录生成 _ide_helper.php 文件,表示安装生成成功。

之后在 PHPStorm 中就可以使用 Facades 的代码补全了,效果如下图:

bf4446e8b99bdb23c82c7c26ac76491a.png

基本原理

在 Laravel 中 Facades 的使用静态方法重载实现的,Facade 基类使用了__callStatic() 魔术方法,直到对象从容器中被解析出来后,才会进行调用。由于此,所以 IDE 的代码补全工具不能解析出来此静态方法的调用。例如 DB::table()->insert()

插件形成了一个助手文件,将项目中的 Facades 的方法,具体实现了一份,没有实现具体功能,仅仅是实现了结构部分,例如属于哪个 Facades ,有哪些参数,返回值类型等。这样就告知了 IDE 使用那些内容补全代码!参考生成的助手文件 _ide_helper.php 的部分代码:

 1namespace IlluminateSupportFacades { 
 2    class DB {
 3        /**
 4         * Run an insert statement against the database.
 5         *
 6         * @param string $query
 7         * @param array $bindings
 8         * @return bool 
 9         * @static 
10         */ 
11        public static function insert($query, $bindings = array())
12        {
13            //Method inherited from IlluminateDatabaseConnection            
14                        /** @var IlluminateDatabaseMySqlConnection $instance */
15                        return $instance->insert($query, $bindings);
16        }
17    }
18}
19namespace  { 
20  class DB extends IlluminateSupportFacadesDB {}
21}

上面的代码可知道,模拟了类 DB,并模拟的静态方法 insert,通过规范化的注释,得到 PHPDoc,从而实现 IDE 的代码提示功能。

欢迎微信关注:小韩说课,有很多 PHP 的资源,输入 PHP 获取PHP教程。

5b26948e36d9f8218bf16b26780caaf9.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值