wh-felice/laravel-ide-helper

Laravel IDE Helper,为所有 Facade 类生成正确的 PHPDocs,以改善自动完成。

此包的规范存储库似乎已消失,因此包已被冻结。

v1.0.1 2018-01-05 01:43 UTC

This package is not auto-updated.

Last update: 2020-05-15 19:31:32 UTC


README

Latest Version on Packagist Software License Build Status Total Downloads

对于 Laravel 4.x,请查看版本 1.11

从源直接完成phpDocs

查看这个Laracasts视频了解快速介绍/解释!

此包生成一个您的IDE可以理解的文件,因此它可以提供准确的自动完成。生成基于您的项目中的文件,因此它们始终是最新的。如果您不想生成它,可以将预先生成的文件添加到Laravel项目的根目录中(但这不如自行生成的文件更新)。

注意:您需要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方法(例如paginatefindOrFail),您应该扩展\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 许可证