gpt4 book ai didi

php - 如何向 Laravel Artisan 生成的代码添加更多内容?

转载 作者:搜寻专家 更新时间:2023-10-31 20:56:48 25 4
gpt4 key购买 nike

我想在我的资源 Controller 类声明上方包含一些注释代码,最好在使用 php artisan make:controller MyController -resource 生成 Controller 时添加。即,我想在每个 Controller 文件的顶部添加路径别名:

/*
Verb URI Action Route Name desc
GET /photos index photos.index Display a listing of the resource.
GET /photos/create create photos.create Show the form for creating a new resource.
POST /photos store photos.store Store a newly created resource in storage.
GET /photos/{photo} show photos.show Display the specified resource.
GET /photos/{photo}/edit edit photos.edit Show the form for editing the specified resource.
PUT/PATCH /photos/{photo} update photos.update Update the specified resource in storage.
DELETE /photos/{photo} destroy photos.destroy Remove the specified resource from storage.
*/

这纯粹是一个方便的例子,但也有其他时候我想将其他东西添加到我用 artisan 生成的模型和迁移中。这可以做到吗?我需要重新编译 artisan 二进制文件吗?

最佳答案

这有点棘手,但如果您知道如何绕过容器,您应该没问题。

首先,您必须通过扩展默认值并更改此方法来覆盖 ArtisanServiceProvider

/**
* Register the command.
*
* @return void
*/
protected function registerControllerMakeCommand()
{
$this->app->singleton('command.controller.make', function ($app) {
return new ControllerMakeCommand($app['files']);
});
}

通过这样做,您只需允许自己在容器中分配自定义 ControllerMakeCommand

然后您只需复制该类并更改您想要的代码。

在你的例子中是 stub 文件。

/**
* Get the stub file for the generator.
*
* @return string
*/
protected function getStub()
{
$stub = null;

if ($this->option('parent')) {
$stub = '/stubs/controller.nested.stub';
} elseif ($this->option('model')) {
$stub = '/stubs/controller.model.stub';
} elseif ($this->option('invokable')) {
$stub = '/stubs/controller.invokable.stub';
} elseif ($this->option('resource')) {
$stub = '/stubs/controller.stub';
}

if ($this->option('api') && is_null($stub)) {
$stub = '/stubs/controller.api.stub';
} elseif ($this->option('api') && ! is_null($stub) && ! $this->option('invokable')) {
$stub = str_replace('.stub', '.api.stub', $stub);
}

$stub = $stub ?? '/stubs/controller.plain.stub';

return __DIR__.$stub;
}

当然,您必须复制 stub 文件并根据需要进行编辑。

关于php - 如何向 Laravel Artisan 生成的代码添加更多内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57667947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com