Mrcdh技术博客 Mrcdh技术博客
首页
  • Html5
  • Javascript
  • Nodejs
  • electron
  • Android
  • 微信公众号
  • 框架
  • 其他
  • Mysql
  • PHP
  • Python
  • java
  • Gulp
  • 其它
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Mrcdh

全栈开发小学生
首页
  • Html5
  • Javascript
  • Nodejs
  • electron
  • Android
  • 微信公众号
  • 框架
  • 其他
  • Mysql
  • PHP
  • Python
  • java
  • Gulp
  • 其它
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • ThinkPHP

  • FastAdmin

  • laravel

  • laravel-jetstream.vue

  • laravel常用扩展包

    • Laraval IDE 自动补全助手:Laravel IDE Helper Generator
      • 简介
      • 安装
      • 自动生成 Laravel 门面对应的 phpDoc
      • 自动生成模型对应的 phpDoc
      • PHPStorm 中容器实例对应的 Meta
    • Laravel-Modules 多模块扩展
    • tenancy多租户框架
  • 《PHP框架》
  • laravel常用扩展包
mrcdh
2021-10-27
目录

Laraval IDE 自动补全助手:Laravel IDE Helper Generator

# 简介

该扩展包可以生成一个 IDE 可以理解的文件,以便提供精准的自动补全功能。这个生成的文件基于项目中存在的文件,所以永远是实时的。当然如果你不想手动生成这个文件,也可以使用预生成的文件并把它们放到项目根目录下(这些文件就没有那么实时了)。

# 安装

我们使用如下 composer 命令安装扩展包相关依赖:

composer require barryvdh/laravel-ide-helper
1

安装完成后我们需要到config/app.php的providers选项中注册服务提供者:

Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,
1

# 自动生成 Laravel 门面对应的 phpDoc

在使用这个扩展包之前,或许不少人已经碰到了使用 PHPStorm 不能自动补全门面(Facade)的问题,现在 Laravel IDE Helper Generator 为我们带来了福音。我们使用如下命令生成包含门面补全信息的文件:

php artisan ide-helper:generate
1

注意:在此之前需要清除 bootstrap/compiled.php,所以生成之前需要先运行 php artisan clear-compiled 然后运行 php artisan optimize。 为了后续方便,你也可以在composer.json文件中作如下配置:

"scripts":{
  "post-update-cmd": [
    "php artisan clear-compiled",
    "php artisan ide-helper:generate",
    "php artisan optimize"
  ]
},
1
2
3
4
5
6
7

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

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

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

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

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

# 自动生成模型对应的 phpDoc

在使用本特性之前,需要先安装 doctrine/dbal: ~2.3:

composer require doctrine/dbal
1

如果你不想自己编写模型属性,可以使用 php artisan ide-helper:models 命令来基于数据表字段、关联关系以及 getters/setters 生成对应的 phpDoc。你可以通过—write(-W)选项来编写模型文件的注释,默认情况下,你需要覆盖或新建一个单独的文件_ide_helper_models.php,你也可以通过—nowrite(-N)不做更改。需要注意的是在进行操作之前需要备份模型文件,因为我们要保留之前已存在的,只是追加新属性和方法,而不是覆盖和重写。phpdoc 已存在会被替换,否则新增,通过—reset(-R)选项,已存在的 phpdoc 会被忽略,新增的字段关系才会被保存。

php artisan ide-helper:models Post
1

该命令会根目录下生成文件 _ide_helper_models.php。

/**
 * An Eloquent Model: 'Post'
 *
 * @property integer $id
 * @property integer $author_id
 * @property string $title
 * @property string $text
 * @property \Carbon\Carbon $created_at
 * @property \Carbon\Carbon $updated_at
 * @property-read \User $author
 * @property-read \Illuminate\Database\Eloquent\Collection|\Comment[] $comments
 */
1
2
3
4
5
6
7
8
9
10
11
12

默认情况下,app/models 中的模型会被遍历,可以使用如下方式告诉哪些模型被使用:

php artisan ide-helper:models Post User
1

还可以通过--dir 选项浏览一个其他目录(基于根路径):

php artisan ide-helper:models --dir="path/to/models" --dir="app/src/Model"
1

也可以发布配置文件(php artisan vendor:publish)并设置默认目录。

可以使用—ignore(-I)选项来忽略模型:

php artisan ide-helper:models --ignore="Post,User"
1

可以通过命名空间包裹模型名称:php artisan ide-helper:models "API\User"

# PHPStorm 中容器实例对应的 Meta

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

php artisan ide-helper:meta
1

会在根目录下生成 .phpstorm.meta.php 文件。

app('events')->fire();
\App::make('events')->fire();

/** @var \Illuminate\Foundation\Application $app */
$app->make('events')->fire();

// When the key is not found, it uses the argument as class name
app('App\SomeClass');
1
2
3
4
5
6
7
8

注意

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

#laravel
上次更新: 2023/09/22, 16:54:32
Jetstream基本使用
Laravel-Modules 多模块扩展

← Jetstream基本使用 Laravel-Modules 多模块扩展→

最近更新
01
uniapp常见问题
03-19
02
Vue3项目搭建
12-25
03
使用pnpm的monorepo组织项目
11-01
更多文章>
Theme by Vdoing | Copyright © 2020-2025 Mrcdh | 苏ICP备2020058908号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×