cyberpunkcodes / laravel-extended-commands
扩展Laravel命令以供开发者使用
Requires
- php: ^7.3|^8.0
- laravel/framework: ^8.0|^9.0|^10.0
README
扩展Laravel artisan命令,供开发者使用。
Laravel自带了一些有用的命令,但还有一些缺失。希望有一天Laravel会正式添加它们。在此之前,让我们来填补这一空白。
安装
作为开发依赖项安装
composer require cyberpunkcodes/laravel-extended-commands --dev
用法
此包仅可通过命令行使用。有关支持的命令及其用法,请参考下面的命令列表。
命令
make命令将在app
目录及其对应的命名空间中生成文件。
例如:操作将在app/Actions
目录中生成,并在App\Actions
命名空间内。枚举将在app/Enums
中生成,具有App\Enums
命名空间。契约将在app/Contracts
中生成,具有App\Contracts
命名空间。等等。
在名称中使用双反斜杠将生成子目录。例如,运行php artisan make:action User\\AddBlogComment
将在app/Actions/User/AddBlogComment.php
中创建文件,并具有App\Actions\User
命名空间。
所有“make”命令都遵循此约定。
这不会强迫您遵循任何命名约定。您输入的即为您所得到的。如果您希望契约以Contract
结尾,则必须将其作为名称输入,即:CreatesNewBlogPostContract
。如果您希望枚举以“Enum”结尾,则命名它为BlogPostStatusEnum
。我个人认为没有必要在大多数这些名称的末尾添加“Contract”或“Enum”或任何东西,因为它们已经在路径和命名空间中,并且Laravel似乎也没有这样做。我喜欢在我的服务名称末尾添加“Service”,但各有所爱:)
以下列出的动作/命令受支持
清除日志
删除在storage/logs
目录中找到的所有*.log
文件
php artisan clear:logs
创建动作
php artisan make:action SomeAction
示例: php artisan make:action AddBlogPost
默认情况下,这将生成“可调用的操作”,这使得您可以在方法中typhint操作,并使用其参数作为函数/方法。我发现这是操作的最佳用例,Laravel Fortify也主要以此方式使用它们,这也是为什么它是默认的。
public function store(Request $request, AddBlogPost $addBlogPostAction) { $blogPost = $addBlogPostAction($request, $user); // ... }
如果您不想使用可调用的操作,可以传递一个--handle
选项,它将创建一个handle()
方法而不是__invoke()
魔法方法。这非常适合在管道中使用操作,因为它自动具有$request
和$next
参数。
创建契约
php artisan make:contract SomeContract
示例: php artisan make:contract BlogSystem
创建枚举
php artisan make:enum SomeEnum
示例: php artisan make:enum BlogPostStatus
枚举需要PHP版本8.1或更高。
注意:生成的枚举只是一个使用整数的基本活动/非活动状态示例。它将在数据库中将状态转换为1或0,并包含一个将它们转换为字符串表示方法的标签方法(例如,用于视图中的下拉列表)。它可以任何有效的枚举类型,整数只是作为一个起始示例提供。
创建服务
php artisan make:service SomeService
示例: php artisan make:service BlogPostService
什么是服务?服务基本上是一个专门的辅助类的高级名称。这不要与服务提供商混淆。它允许你将大量代码从控制器中提取出来,提高可读性,并允许你编写更细粒度的测试,而不重复代码。如果某个操作或工作不太适用,你可能想使用服务。
创建特质
php artisan make:trait SomeTrait
示例: php artisan make:trait BlogPost
创建视图
php artisan make:view some-name
名称可以嵌套在相对于视图目录的子目录中。
php artisan make:view user/settings
将生成 /resources/views/user/settings.blade.php
名称将被转换为短横线命名法。因此,名称为 someName
将生成 some-name.blade.php
。它不会转换路径(如果传递),只会转换名称。例如:somePath/someName
将生成 somePath/some-name.blade.php
。
视图布局
make:view
命令在某种程度上支持布局。由于Laravel中布局的用法有几种(例如,旧的@extend
方法和新的组件),我认为最好依赖于模板来满足您的各种需求。这样,它不仅处理布局,还处理任意数量的其他视图文件变体。
传递 --stub
选项允许你定义要使用的模板
php artisan make:view some-name --stub=some-stub
模板选项支持相对于 app/Console/stubs
目录的嵌套路径。因此,传递 --stub=views/admin-layout
将使用 app/Console/stubs/views/admin-layout.stub
模板文件。这允许你将视图模板与下面的“自定义模板”部分中提到的其他make命令模板分开。
注意:如果不传递 --stub
选项,则默认使用 make-stub.stub
文件。要覆盖它,你必须创建自己的 make-view.stub
文件在 app/Console/stubs
中。如果你想在 app/Console/stubs/views
中将所有视图模板单独组织,但让默认模板在 stubs
目录之外让你感到烦恼,你可以在 stubs/views
目录中创建 default.stub
。然而,你总是必须传递 --stub=default
。如果不传递,它使用默认的 make-view.stub
,无论是包含在此包中还是覆盖的一个。
自定义模板
你可以覆盖模板并使用自己的文件生成。请参阅项目源代码中包含的模板。
它首先会在 /app/Console/stubs/
中查找是否存在模板。如果不存在,则使用此包提供的默认模板。因此,只需将模板从此包复制到 /app/Console/stubs/
并修改它以符合你的需求。
要求
此包需要Laravel 8或更高版本。它应该与满足你的Laravel版本的任何PHP版本一起工作,这可能是PHP v7.3或更高版本。
然而,枚举需要PHP 8.1或更高版本。
贡献
欢迎贡献。请注意,此包的目标是添加Laravel应该随盒一起提供的附加命令,但由于某种原因,它没有添加。我不想使它过于复杂,并添加所有种类的额外功能。
Laravel已经有许多“make”命令了...但是为什么它仍然不创建特质、操作或合同?它们都在它们的官方包中使用。