cyberpunkcodes/laravel-extended-commands

扩展Laravel命令以供开发者使用

v1.0.1 2023-04-06 06:11 UTC

This package is auto-updated.

Last update: 2024-09-06 09:32:07 UTC


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”命令了...但是为什么它仍然不创建特质、操作或合同?它们都在它们的官方包中使用。