wh-felice / laravel-ide-helper
Laravel IDE Helper,为所有 Facade 类生成正确的 PHPDocs,以改善自动完成。
此包的规范存储库似乎已消失,因此包已被冻结。
Requires
- php: >=5.4.0
- barryvdh/reflection-docblock: ^2.0.4
- illuminate/console: ^5.0,<5.6
- illuminate/filesystem: ^5.0,<5.6
- illuminate/support: ^5.0,<5.6
- symfony/class-loader: ^2.3|^3.0
Requires (Dev)
- doctrine/dbal: ~2.3
- illuminate/config: ^5.0,<5.6
- illuminate/view: ^5.0,<5.6
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: ~2.3
Suggests
- doctrine/dbal: Load information from the database about models for phpdocs (~2.3)
This package is not auto-updated.
Last update: 2020-05-15 19:31:32 UTC
README
对于 Laravel 4.x,请查看版本 1.11
从源直接完成phpDocs
查看这个Laracasts视频了解快速介绍/解释!
php artisan ide-helper:generate
- Laravel Facades的phpDoc生成php artisan ide-helper:models
- 模型的phpDocsphp artisan ide-helper:meta
- PhpStorm元文件
此包生成一个您的IDE可以理解的文件,因此它可以提供准确的自动完成。生成基于您的项目中的文件,因此它们始终是最新的。如果您不想生成它,可以将预先生成的文件添加到Laravel项目的根目录中(但这不如自行生成的文件更新)。
- L5的生成版本:https://gist.github.com/barryvdh/5227822
- Lumen的生成版本:https://gist.github.com/barryvdh/be17164b0ad51f832f20
- 生成的Phpstorm元文件:https://gist.github.com/barryvdh/bb6ffc5d11e0a75dba67
注意:您需要Sublime Text的CodeIntel: https://github.com/SublimeCodeIntel/SublimeCodeIntel
安装
使用以下命令使用composer安装此包
composer require wh-felice/laravel-ide-helper
更新composer后,将服务提供者添加到config/app.php
中的providers
数组中
WhFelice\LaravelIdeHelper\IdeHelperServiceProvider::class,
要仅在开发系统上安装此包,请将--dev
标志添加到您的composer命令中
composer require --dev wh-felice/laravel-ide-helper
在Laravel中,您可以在app/Providers/AppServiceProvider.php
文件的register()
方法中添加以下代码,而不是在config/app.php
文件中添加服务提供者
public function register() { if ($this->app->environment() !== 'production') { $this->app->register(\WhFelice\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" ] },
您还可以发布配置文件以更改实现(例如,将接口指定为特定类)或设置--helpers
或--sublime
的默认值。
php artisan vendor:publish --provider="Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider" --tag=config
生成器尝试识别真实类,但如果找不到,您可以在配置文件中定义它。
某些类需要有效的数据库连接。如果没有默认的可用连接,某些门面将不会被包含。您可以通过添加-M
选项使用内存中的SQLite驱动。
您可以选择包含辅助文件。默认情况下,这是禁用的,但您可以使用--helpers (-H)
选项来覆盖它。Illuminate/Support/helpers.php
已经设置好了,但您可以在配置文件中添加或删除自己的文件。
模型自动phpDocs
您需要在您的composer.json中引入
doctrine/dbal: ~2.3
以获取数据库列。
composer require doctrine/dbal
如果您不想自己编写属性,可以使用命令php artisan ide-helper:models
根据表列、关系和getter/setter生成phpDocs。您可以使用--write (-W)
选项直接将注释写入模型文件。默认情况下,您会被提示覆盖或写入一个单独的文件(_ide_helper_models.php
)。您可以使用--nowrite (-N)
强制不写入。请在写入信息之前备份您的模型。它将保留现有的注释并仅附加新的属性/方法。现有的phpdoc将被替换,如果没有找到则添加。使用--reset (-R)
选项,将忽略现有的phpdocs,并将新找到的列/关系作为phpdocs保存。
php artisan ide-helper:models Post
/** * 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 */
默认情况下,将扫描app/models
中的模型。可选参数指定了要使用的模型(也可以在app/models之外)。
php artisan ide-helper:models Post User
您也可以使用--dir
选项(相对于基本路径)扫描不同的目录。
php artisan ide-helper:models --dir="path/to/models" --dir="app/src/Model"
您可以发布配置文件(php artisan vendor:publish
)并设置默认目录。
可以使用--ignore (-I)
选项忽略模型。
php artisan ide-helper:models --ignore="Post,User"
注意:对于命名空间,请用双引号括住模型名称("
):php artisan ide-helper:models "API\User"
,或者转义斜杠(Api\\User
)
为了正确识别Model
方法(例如paginate
、findOrFail
),您应该扩展\Eloquent
或添加
/** @mixin \Eloquent */
到您的模型类。
Laravel Fluent方法自动phpDocs生成
如果您需要在迁移中为Fluent方法提供phpDocs支持,例如
$table->string("somestring")->nullable()->index();
发布供应商后,只需将config/ide-helper.php
文件中的include_fluent
行更改如下
'include_fluent' => true,
然后运行php artisan ide-helper:generate
,现在您的IDE将识别所有Fluent方法。
PhpStorm容器实例元数据
可以生成PhpStorm元文件以添加对工厂设计模式的支持。对于Laravel,这意味着我们可以让PhpStorm理解从IoC容器中解析出哪种类型的对象。例如,events
将返回一个Illuminate\Events\Dispatcher
对象,因此使用元文件,您可以调用app('events')
并自动完成Dispatcher方法。
php artisan ide-helper:meta
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');
预生成的示例:[https://gist.github.com/barryvdh/bb6ffc5d11e0a75dba67](https://gist.github.com/barryvdh/bb6ffc5d11e0a75dba67)
注意:您可能需要重新启动PhpStorm并确保
.phpstorm.meta.php
已索引。注意:当您收到有关找不到类的致命异常时,请检查您的配置(例如,在没有配置S3时移除S3作为云驱动程序。在没有使用Redis ServiceProvider时移除Redis ServiceProvider)。
Lumen 安装
该软件包专注于 Laravel 开发,但也可以通过一些解决方案在 Lumen 中使用。由于 Lumen 的工作方式略有不同,它类似于 Laravel 的骨架版本,主要配置参数位于 bootstrap/app.php
中,因此需要进行一些修改。
启用 Facades
虽然 Laravel IDE Helper 可以自动生成代码提示的默认 Facades,但 Lumen 默认没有启用 Facades。如果您打算使用它们,必须在 创建应用程序
部分启用它们,取消注释这一行
// $app->withFacades();
从那里,您应该能够使用 create_alias()
函数将额外的 Facades 添加到您的应用程序中。
添加服务提供者
您可以在 app/Providers/AppServiceProvider.php
中安装 Laravel IDE Helper,并取消注释注册 App 服务提供者的这一行,以便它能够正确加载。
// $app->register(App\Providers\AppServiceProvider::class);
如果您没有使用该行,通常这对于优雅地管理多个 Laravel/Lumen 安装很有用,您必须在 bootstrap/app.php
的 注册服务提供者
部分添加这一行代码。
if ($app->environment() !== 'production') { $app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class); }
之后,Laravel IDE Helper 应该可以正常工作。在生成过程中,脚本可能会抛出异常,说某些类不存在或存在未定义的索引。这是正常的,因为 Lumen 去除了某些默认包,如 Cookies、Storage 和 Session。如果您打算添加这些包,您将需要手动添加它们,并在必要时创建额外的 Facades。
添加额外的 Facades
目前 Lumen IDE Helper 并不考虑使用 create_alias()
在 bootstrap/app.php
下创建的额外 Facades,因此您需要创建一个 config/app.php
文件,并将您的自定义别名再次添加到 aliases
数组中,如下所示
return [ 'aliases' => [ 'CustomAliasOne' => Example\Support\Facades\CustomAliasOne::class, 'CustomAliasTwo' => Example\Support\Facades\CustomAliasTwo::class, //... ] ];
运行 php artisan ide-helper:generate
后,建议(但不强制)将 config/app.php
重命名为其他名称,直到您需要重新生成文档或将其部署到生产环境。Lumen 5.1+ 如果存在,将读取此文件作为配置参数,并且如果它完全填充,可能会覆盖一些配置。
许可证
Laravel IDE Helper 生成器是开源软件,采用 MIT 许可证