非人类/laravel-ide-helper

此包已被废弃,不再维护。未建议替代包。

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

v2.4.3 2018-02-08 07:56 UTC

README

Latest Version on Packagist Software License Build Status Total Downloads

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

直接从源代码生成 phpDocs

查看 此 Laracasts 视频 获取快速介绍/解释!

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

注意:您需要 CodeComplice for Sublime Text: https://github.com/spectacles/CodeComplice

安装

使用以下命令通过 composer 安装此包

composer require barryvdh/laravel-ide-helper

更新 composer 后,将服务提供者添加到 config/app.php 文件中的 providers 数组

Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,

要仅在开发系统上安装此包,请将 --dev 标志添加到您的 composer 命令

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

在 Laravel 中,您可以在 app/Providers/AppServiceProvider.php 文件中,在 register() 方法内添加以下代码,而不是在 config/app.php 文件中添加服务提供者

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

这将允许您的应用程序在非生产环境中加载 Laravel IDE Helper。

Laravel Facades 的自动 phpDoc 生成

您现在可以自己重新生成文档(用于未来的更新)

php artisan ide-helper:generate

注意:必须首先清除 bootstrap/compiled.php,因此在生成之前请运行 php artisan clear-compiled

您可以将 composer.json 配置为在每次提交后执行此操作

"scripts":{
    "post-update-cmd": [
        "Illuminate\\Foundation\\ComposerScripts::postUpdate",
        "php artisan ide-helper:generate",
        "php artisan ide-helper:meta"
    ]
},

您还可以发布配置文件以更改实现(例如,将接口设置为特定类)或为 --helpers--sublime 设置默认值。

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

生成器尝试识别真实类,但如果找不到,您可以在配置文件中定义它。

某些类需要正常工作的数据库连接。如果您没有默认的正常工作的连接,某些 Facade 不会被包含。您可以通过添加 -M 选项使用内存中的 SQLite 驱动程序。

您可以选择包含辅助文件。默认情况下,此选项未启用,但您可以使用 --helpers (-H) 选项覆盖它。已设置 Illuminate/Support/helpers.php,但您可以在配置文件中添加/删除自己的文件。

模型的自动phpDocs

您需要在您的composer.json中require doctrine/dbal: ~2.3 来获取数据库列。

composer require doctrine/dbal

如果您不想自己编写属性,可以使用命令 php artisan ide-helper:models 生成phpDocs,基于表列、关系和getter/setter。您可以使用 --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();

发布供应商后,只需将 include_fluent 行从您的 config/ide-helper.php 文件改为

'include_fluent' => true,

然后运行 php artisan ide-helper:generate,现在您的IDE将识别所有的Fluent方法。

PhpStorm容器实例的Meta

可以生成PhpStorm meta文件以支持工厂设计模式。对于Laravel,这意味着我们可以让PhpStorm理解我们从IoC容器解析出的对象类型。例如,events将返回一个Illuminate\Events\Dispatcher对象,因此,通过meta文件,您可以调用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)。

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 不会考虑在 bootstrap/app.php 下使用 create_alias() 创建的额外 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 许可协议