答案:通过 php artisan make:command SendEmails 创建命令类,定义 signature 设置参数与选项,如 {user}、{–queue}、{–type=}、{–when=*},在 handle() 中用 argument() 和 option() 获取值,并可结合 ask、confirm 等方法实现交互,最终实现灵活的自动化命令。

Laravel 的 Artisan 命令工具非常强大,通过自定义命令可以实现自动化任务处理。创建带有选项和参数的自定义 Artisan 命令,能让你更灵活地控制命令行为。
生成自定义 Artisan 命令
使用以下 Artisan 命令生成一个新的命令类:
php artisan make:command SendEmails
这将在 app/Console/Commands 目录下创建 SendEmails.php 文件。确保在 AppServiceProvider 或配置中已注册命令(Laravel 8+ 默认自动发现)。
定义命令的签名与描述
在命令类的 signature 属性中定义命令名称、参数和选项。格式如下:
{name}:必需参数 {name?}:可选参数 {name=default}:带默认值的参数 {–option}:布尔选项(开关) {–option=} 或 {–option=value}:接收值的选项 {–option=*}:可接收多个值的选项
示例:
protected $signature = 'send:emails {user} {--queue} {--type=} {--when=*}';
该签名表示:
user:必须传入的用户标识 –queue:是否加入队列(true/false) –type=:指定邮件类型,如 –type=welcome –when=*:可多次传递发送时间点
在命令中获取参数和选项
在 handle() 方法中使用 $this->argument() 和 $this->option() 获取输入值。
public function handle(){ $user = $this->argument('user'); $queue = $this->option('queue'); $type = $this->option('type'); $when = $this->option('when'); $this->info("发送邮件给: $user"); $this->info("队列模式: " . ($queue ? '开启' : '关闭')); $this->info("邮件类型: $type"); $this->info("发送时间: " . implode(', ', $when));}
执行命令示例:
php artisan send:emails zhangsan --queue --type=welcome --when=now --when=later
交互式提示输入
你还可以在命令中动态请求用户输入:
$this->ask(‘问题’):普通输入 $this->secret(‘问题’):隐藏输入(如密码) $this->confirm(‘确认吗?’):确认对话 $this->choice(‘选择’, [‘a’,’b’]):选择项
例如:
if ($this->confirm('是否继续?')) { $email = $this->ask('请输入邮箱');}
基本上就这些。定义好签名,使用 argument 和 option 方法取值,再结合交互方法,就能构建出功能完整的自定义 Artisan 命令。不复杂但容易忽略细节,比如选项的等号写法和参数默认值设置。
以上就是laravel如何创建自定义的 Artisan 命令选项和参数_Laravel自定义Artisan命令选项与参数方法的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/6239.html
微信扫一扫
支付宝扫一扫