IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Laraval IDE 自动补全插件 laravel-ide-helper -> 正文阅读

[PHP知识库]Laraval IDE 自动补全插件 laravel-ide-helper

本文为joshua317原创文章,转载请注明:转载自joshua317博客?Laraval IDE 自动补全插件 laravel-ide-helper - joshua317的博客

一、背景

我们在实际的开发场景中,不少人或许已经碰到了使用PHPStorm不能自动补全门面(Facade)的问题,或者其他类通过容器调用时无法补全或者跳转。而插件 laravel-ide-helper就是用来解决这个问题的。

二、laravel-ide-helper介绍

Laravel IDE Helper 是一个比较好用的代码提示及补全工具,可以给编写代码带来极大的便利。该扩展包可以生成一个IDE可以理解的文件,以便提供精准的自动补全功能。这个生成的文件基于项目中存在的文件,所以永远是实时的。当然如果你不想手动生成这个文件,也可以使用预生成的文件并把它们放到项目根目录下(这些文件就没有那么实时了),但是不推荐这种方式,因为我们的目的就是为了好用!!!

Larval 5:https://gist.github.com/barryvdh/5227822
Lumen:https://gist.github.com/barryvdh/be17164b0ad51f832f20
PHPStorm Meta 文件:https://gist.github.com/barryvdh/bb6ffc5d11e0a75dba67

二、安装

2.1 方式一:通过composer require

进入到laravel项目,在项目目录下执行下面命令即可

composer require barryvdh/laravel-ide-helper  
# 仅在开发系统中安装提示包 加上 --dev
composer require barryvdh/laravel-ide-helper --dev

2.2 方式二:通过修改composer.json

版本根据实际情况进行调整

 "barryvdh/laravel-ide-helper": "^2.7",

注意1:如果你需要为模型注释字段,请安装 doctrine/dbal

composer require doctrine/dbal

注意2:Laravel版本小于5.5, 需要注册提供者:在 config/app.php 中的 providers 数组中加入

Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,

或在 app/Providers/AppServiceProvider.php 文件中根据环境进行注册

public function register()
{
    if ($this->app->environment() !== 'production') {
        $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
    }
    // ...
}

PowerShell

Copy

文件信息:vendor/barryvdh/laravel-ide-helper/src/IdeHelperServiceProvider.php

三、用法

php artisan ide-helper:generate - 为 Facades 生成注释
php artisan ide-helper:models - 为数据模型生成注释
php artisan ide-helper:meta - 生成 PhpStorm Meta file

3.1 自动为 Laravel 的 Facades 生成注释

php artisan ide-helper:generate

注意:如果存在文件 「bootstrap/compiled.php」文件,则需要先删除, 可以在生成文当前运行

php artisan clear-compiled

当然你也可以在composer.json文件中作如下配置,这样可以自动运行 generate

scripts":{
    "post-update-cmd":?[
        "php?artisan?clear-compiled",
        "php?artisan?ide-helper:generate",
        "php?artisan?optimize"
    ]
},

还可以发布配置文件以修改默认实现

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

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

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

你可以选择要包含的辅助函数文件,默认该选项并未开启,但是你可以通过--helpers选项覆盖默认配置。默认会引入Illuminate/Support/helpers.php,当然你还可以在配置文件中添加自定义的辅助函数文件。

3.2 自动为模型生成注释

php artisan ide-helper:models

//指定文件
php artisan ide-helper:models "App\Models\Admin"

为所有模型生成注释会出现询问,输入yes:

Do you want to overwrite the existing model files? Choose no to write to _ide_helper_models.php instead? (Yes/No):

PowerShell

Copy

输入 yes 则会直接在模型文件中写入注释,否则会生成「ide_helper_models.php」文件。强烈推荐选择 yes,这样在跟踪文件的时候不会跳转到「ide_helper_models.php」文件,不过这么做最好对模型文件做个备份,至少在生成注释之前用 git 控制一下版本,以防万一。

注意:为模型生成字段信息必须在数据库中存在相应的数据表,不要生成 migration 还没运行 migrate 的时候就生成注释,这样是得不到字段信息的。

3.3 自动为链式操作注释

这是什么意思呢?举个例子,在 migration 文件中经常可以看见这样的代码:

$table->string('email')->unique();

PowerShell

Copy

这时候就算调用过了 php artisan ide-helper:generate,在调用像 ->unique() 这样的链式操作的时候也无法实现代码提示,这时候需要将配置文件「如果导出的话」'include_fluent' => false 修改为 'include_fluent'=> true,重新运行?php artisan ide-helper:generate即可。

3.4 生成PHPStorm中容器实例对应的Meta

php?artisan?ide-helper:meta

可以生成一个PHPStorm meta文件来添加工厂设计模式支持,对Laravel而言,这意味着我们可以让PHPStorm理解从IoC容器中取出的对象类型。例如,events会返回Illuminate\Events\Dispatcher对象,因此通过meta文件你可以调用app('events')然后它会自动补全对应的调度方法。

执行php artisan ide-helper:meta命令后会在根目录下生成?.phpstorm.meta.php文件。

注意:你可能需要重启PHPStorm以确保.phpstorm.meta.php被索引。

四、知识拓展

知识扩展:Composer 在运行过程中将会触发以下事件:

事件名称详细说明
pre-install-cmd在?install?命令执行前触发。
post-install-cmd在?install?命令执行后触发。
pre-update-cmd在?update?命令执行前触发。
post-update-cmd在?update?命令执行后触发。
pre-status-cmd在?status?命令执行前触发。
post-status-cmd在?status?命令执行后触发。
pre-package-install在资源包安装前触发。
post-package-install在资源包安装后触发。
pre-package-update在资源包更新前触发。
post-package-update在资源包更新后触发。
pre-package-uninstall在资源包被卸载前触发。
post-package-uninstall在资源包被卸载后触发。
pre-autoload-dump在自动加载器被转储前触发,无论是?install/update?还是?dump-autoload?命令都会触发。
post-autoload-dump在自动加载器被转储后触发,无论是?install/update?还是?dump-autoload?命令都会触发。
post-root-package-install在?create-project?命令期间,根包安装完成后触发。
post-create-project-cmd在?create-project?命令执行后触发。

注意:?Composer 不会去执行任何依赖包中定义的?install?或?update?相关脚本。因此你不应该在依赖包中申明?pre-update-cmd?或?pre-install-cmd。如果你需要在执行?install?或?update?命令前使用脚本,请确保它们已被定义在根包中。

本文为joshua317原创文章,转载请注明:转载自joshua317博客?Laraval IDE 自动补全插件 laravel-ide-helper - joshua317的博客

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:18:12  更:2022-01-17 11:19:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 5:19:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计