bpocallaghan/generators

自定义Laravel文件生成器,包括配置和可发布的模板。

支持包维护!
Patreon

11.0.0 2024-04-15 13:37 UTC

README

自定义Laravel文件生成器,带有配置文件和可发布的模板。您可以发布模板。您可以添加自己的模板以生成。

此包正在被用于Admin Starter Project,该项目专注于测试驱动开发,并为您准备好了基础。

Laravel 5.1 : v2.1.3
Laravel 5.2 - 5.3 : v3.0.3
Laravel 5.4 : v4.1.9
Laravel 5.5 - 5.8 : v5.0.0+
Laravel 6.0 : v5.1.0+
Laravel 7.0 : v6.x
Laravel 8.0 : v7.x
Laravel 9.0 : v8.x
Laravel 10.0 : v9.x

命令

php artisan generate:publish-stubs
php artisan generate:model
php artisan generate:view
php artisan generate:controller
php artisan generate:migration
php artisan generate:migration:pivot
php artisan generate:seed
php artisan generate:resource
php artisan generate:repository
php artisan generate:contract
php artisan generate:notification
php artisan generate:event
php artisan generate:listener
php artisan generate:event-listener
php artisan generate:trait
php artisan generate:job
php artisan generate:console
php artisan generate:middleware
php artisan generate:factory
php artisan generate:test
php artisan generate:file
php artisan generate:exception
php artisan generate:component
php artisan generate:livewire

所有命令的选项

  • --force 如果存在,将覆盖现有文件。
  • --test 这还将生成一个测试文件。

除了 viewsmigration:pivot 的所有命令选项

  • --plain 这将使用命令的 .plain 模板(生成一个空的控制器)

自定义

这是除了 migrationmigration:pivot 命令之外的所有内容

php artisan generate:file foo.bar --type=controller
php artisan generate:view foo.bar --stub=view_show --name=baz_show
php artisan generate:file foo.bar --type=controller --stub=controller_custom --name=BazzzController --plain --force

您可以指定要生成的文件的名称。您可以添加 --plain 或 --force 选项。您可以覆盖默认的模板。您可以使用可用的占位符创建自己的模板。您可以创建新的设置类型,例如

  • 'exception' => ['namespace' => '\Exceptions', 'path' => './app/Exceptions/', 'postfix' => 'Exception'],

可用的占位符

视图自定义模板

php artisan generate:view posts
php artisan generate:view admin.posts --stub=custom
php artisan generate:view admin.posts --stub=another_file

安装

更新项目的 composer.json 文件。

composer require bpocallaghan/generators --dev

添加服务提供者(Laravel 5.5+ 有自动发现包的功能)您只想将这些生成器用于本地开发,请在 app/Providers/AppServiceProvider.php 中添加提供者

public function register()
{
    if ($this->app->environment() == 'local') {
        $this->app->register(\Bpocallaghan\Generators\GeneratorsServiceProvider::class);
    }
}

运行 php artisan 命令以在 generate:* 部分查看新命令

使用

模型

php artisan generate:model bar
php artisan generate:model foo.bar --plain
php artisan generate:model bar --force
php artisan generate:model bar --factory
php artisan generate:model bar --migration
php artisan generate:model bar --migration --schema="title:string, body:text"

视图

php artisan generate:view foo
php artisan generate:view foo.bar
php artisan generate:view foo.bar --stub=view_show
php artisan generate:view foo.bar --name=foo_bar

控制器

php artisan generate:controller foo
php artisan generate:controller foo.bar
php artisan generate:controller fooBar
php artisan generate:controller bar --plain
php artisan generate:controller BarController --plain
  • 如果需要,将添加 Controller 后缀。

迁移

这非常类似于Jeffrey Way的

php artisan generate:migration create_users_table
php artisan generate:migration create_users_table --plain
php artisan generate:migration create_users_table --force
php artisan generate:migration create_posts_table --schema="title:string, body:text, slug:string:unique, published_at:date"

交叉表

这非常类似于Jeffrey Way的

php artisan generate:migration:pivot tags posts

数据库播种器

php artisan generate:seed bar
php artisan generate:seed BarTableSeeder
  • 如果需要,将添加 TableSeeder 后缀。

资源

php artisan generate:resource bar
php artisan generate:resource foo.bar
php artisan generate:resource foo.bar_baz
php artisan generate:resource bar --schema="title:string, body:text, slug:string:unique, published_at:date"
php artisan generate:resource articles --controller=admin
  • 这将生成一个 Bar 模型,BarsController,资源视图(在配置中),create_bars_table 迁移,BarTableSeeder
  • 在配置中有一个 resource_views 数组,您可以在其中指定要生成的视图,只需确保模板存在即可。
  • 这还将要求您生成“存储库 - 合同模式”文件。
  • --controller=admin 允许您在生成控制器时使用 controller_admin 模板。

存储库

php artisan generate:repository Posts

这将生成一个用于您控制器的 Posts 存储库文件。

合同

php artisan generate:contract Cache

这将生成一个用于您的存储库的 Cache 合同文件。

通知

php artisan generate:notification UserRegistered

这将生成一个 UserRegistered 通知。Laravel 提供了支持通过各种传递通道发送通知,包括邮件、SMS(通过 Nexmo)和 Slack。通知还可以存储在数据库中,以便在您的 Web 界面中显示。

事件和监听器

php artisan generate:event InvoiceWasPaid
php artisan generate:listener NotifyUserAboutPayment --event=InvoiceWasPaid
php artisan generate:event-listener

这将生成事件和监听器。Laravel 的事件提供了一个简单的观察器实现,允许您订阅和监听在您的应用程序中发生的事件。

php artisan generate:event-listener 将生成在您的 EventServiceProvider 中定义的所有缺失的事件和监听器。

特质

php artisan generate:trait Http\Controllers\Traits\Bar

这将生成一个FooBar特性文件。命令将使用该名称作为命名空间。generate:trait Foo将在app/Foo.php中创建一个文件,generate:trait Foo\Bar将在app/Foo/Bar.php中创建一个文件。

作业

php artisan generate:job SendReminderEmail

这将生成一个发送提醒邮件作业文件。

控制台(Artisan命令)

php artisan generate:console SendEmails
php artisan generate:console SendEmails --command=send:emails

这将生成一个SendEmails Artisan命令文件。--command选项是可选的。

中间件

php artisan generate:middleware AuthenticateAdmin

这将生成一个AuthenticateAdmin中间件文件。

工厂

php artisan generate:factory Post
php artisan generate:factory PostFactory

这将生成一个PostFactory模型文件。

测试

php artisan generate:test UserCanLogin
php artisan generate:test Post --unit
php artisan generate:test Auth\LoginTest

这将生成Feature\UserCanLogin、Unit\PostTest和Unit\Auth\LoginTest文件。

组件

php artisan generate:component Foo
php artisan generate:component Foo/Bar
php artisan generate:component Baz --test

这将生成一个Laravel组件。将生成php和blade文件。您还可以指定生成单元测试。

Livewire

php artisan generate:livewire Foo
php artisan generate:livewire Foo/Bar
php artisan generate:livewire Baz --test
php artisan generate:livewire foo-bar --request

这将生成一个Livewire组件。将生成php和blade文件。您还可以指定生成测试或表单请求。

配置

php artisan generate:publish-stubs

这会将配置文件复制到/config/generators.php。在这里,您可以更改每个type(如模型、视图、控制器、种子)的设置默认值。您还可以更改命名空间、创建文件的路径、前缀/后缀等。您还可以添加新的模板。

这还会将所有模板复制到/resources/stubs/。在这里,您可以更改当前的模板,为文件添加自己的样板/注释。您还可以在这里添加自己的模板,并在配置中指定以供使用。迁移模板注意:`migration.stub`仅是外层部分,而`schema_create.stub或schema_change.stub`是您修改表结构的部分。《schema_create.stub》已添加了样板。

文件

这是视图、模型、控制器、种子命令的基本命令。迁移和迁移:迁移使用Jeffrey的类。在配置中有一个`settings`数组,这是`types`及其设置。您可以添加更多,例如,如果您使用存储库,您可以在这里添加。

php artisan generate:file foo.bar --type=view
php artisan generate:file foo.bar --type=controller
php artisan generate:file foo.bar --type=model
php artisan generate:file foo.bar --type=model --stub=model_custom

自定义文件创建消息以添加对ide打开文件的支持

为打开输出创建链接。将output_path_handler作为函数添加到您的config/generators.php。示例

'output_path_handler' => static function($path){
    return 'file:///' . base_path() . $path;
},

这将输出一个文件schema URI,JetBrain产品(Intellij、Php Storm、Web Storm等)然后可以直接从您的终端打开。

谢谢

我的其他包

  • Alert一个辅助包,通过外观或辅助函数将bootstrap警报闪现到浏览器。
  • Notify具有图标、动画和超时功能的Laravel Flash通知。
  • Impersonate User允许您认证为您的任何客户。
  • Sluggable提供了一个HasSlug trait,在保存您的Laravel Eloquent模型时将生成一个唯一的slug。