hexafuchs / laravel-dynamic-artisan-commands
用于动态替换 artisan 命令的库
v0.0.1
2024-06-30 12:21 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- spatie/laravel-ray: ^1.35
README
此包旨在提供一种通用的接口来替换 artisan 命令。遗憾的是,原始包在这方面提供的可能性不多。我希望创建一个即使其他人想覆盖这些命令也不会崩溃的东西,并且是可重用的。
警告
请注意,此库处于早期 alpha 阶段。任何反馈都受欢迎。目前,我主要担心提供者的顺序是否会导致命令无法注册。请随时打开问题或创建讨论。
安装
您可以通过 composer 安装此包
composer require hexafuchs/laravel-dynamic-artisan-commands
用法
在您的 register()
方法中,添加以下片段。(如果您使用 spatie 包助手,请覆盖 registeringPackage()
函数)
DynamicArtisanServiceProvider::registerCommand('CommandName', CommandNameCommand::class, NewCommandNameCommand::class, false);
第一个参数是命令的名称。如果您的命令是 command:name
,您应该将其写成 UpperCamelCase 表示法,即 CommandName
。请参阅 \Illuminate\Foundation\Providers\ArtisanServiceProvider
了解所有现有命令名称的列表。
如果您想覆盖现有命令,第二个参数是原始命令类,第三个参数是您的扩展原始命令类的新命令类,或者是一个初始化您的新命令类对象的闭包。
如果您想创建新命令,第二个参数是您的命令类,第三个参数是 null 或初始化您的新命令类对象的闭包。
第四个参数用于定义开发命令而不是正常命令。我在这里留下了这个可能性,请注意,这些类型之间似乎没有功能差异。最有可能的是,它们仅用于命令的语义分离。
测试
composer test
更新日志
有关最近更改的更多信息,请参阅 CHANGELOG。
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。