引言

上一期我们介绍了laravel命令行的创建,以及使用方法。使用了一个没有数据输入和输出的测试用例。 本期我们来介绍带有命令行参数输入,和命令行输出信息的代码用法。

代码时间

声明命令行位置参数,在类文件内$signature变量内书写:

protected $signature = 'password:reset {userId} {--sendEmail}';

其中 userId 是必填参数,需要填入一个数据;而 sendEmail 则是一个开关, 如果在命令行中带有 --sendEmail 则返回true,否则返回默认值。

对于常用的位置参数,如果想要对 userId 设置为可选,这样写:

password:reset {userId?}

如果要给其设置一个默认值,这样来写:

password:reset {userId=1}

对于可选项(比如 --password) 需要用户手动输入一个值,这样写:

password:reset {userId} {--password=}

加一个等号即可。如果可选项有默认值,等号传递上即可:

password:reset {userId} {--queue=default}

如果要使用一个命令行参数,接收一系列值,也就是一个数组,这样来声明:

password:reset {userIds*}

用的使用需要使用空格将各个参数排开:

php artisan password:reset 1 2 3

如果是可选项参数,则声明如下:

password:reset {--ids=*}

使用起来的时候,比较人性化,我们推荐这种用法,也是linux操作系统下的惯例:

php artisan password:reset --ids=1 --ids=2 --ids=3

这样要直观的多。

演示示例

假设命令行文件内声明的参数类型如下:

password:reset {userId}

那么在程序内要获取命令行的该参数,需要$this->argument()方法,返回的是一个数组:

[    "command": "password:reset",    "userId': "5",]

获取单个参数的值:

$userId = $this->argument('userId');

对于可选项的值,文件内声明如下:

password:reset {--userId=}

首先我们打印多有的可选项$this->option()数据:

[    "userId" => "5"    "help" => false    "quiet" => false    "verbose" => false    "version" => false    "ansi" => false    "no-ansi" => false    "no-interaction" => false    "env" => null]

如果是获取单个可选项参数,在方法内指定即可:

$userId = $this->option('userId');

写在最后

本文使用对比的方式,为大家演示了命令行的argumentoption的区别, 在用法上我们更推荐使用 option 获取用户输入,这样更符合linux的设计哲学和惯例。

Happy coding :-)

我是@程序员小助手,持续分享编程知识,欢迎关注。

laravel auth(api)-attempt 返回false_3分钟短文:Laravel命令行参数和可选项分不清?怎么可能...相关推荐

  1. Windows API一日一练(一)第一个应用程序 使用应用程序句柄 使用命令行参数 MessageBox函数 RegisterClass和RegisterClassEx函数

    要跟计算机进行交互,就需要计算机显示信息给人看到,或者发出声音给人听到,然后人看到或听到相应的信息后,再输入其它信息给计算机,这样就可以让计算机进行数据处理,把结果显示给我们.现在就来编写一个最简单的 ...

  2. java cmd 返回结果_Java调用cmd命令行并返回执行结果

    命令提示符是在操作系统中,提示进行命令输入的一种工作提示符.在windows环境下,命令行程序为cmd.exe,是一个32位的命令行程序,微软Windows系统基于Windows上的命令解释程序,类似 ...

  3. sql查询无结果返回空_3分钟短文 | Laravel 查询结果检查是不是空,5个方法你别用错...

    引言 Laravel 提供了 Eloquent ORM 对象用于操作数据库,将其进行抽象方便操作. 因为设计的灵活度,大家在使用Model查询数据集的时候,会面临结果为空,记录不存在的问题, 那么如何 ...

  4. laravel blade include使用变量_3分钟短文:可能是Laravel模板最直白的用法了,没有之一...

    引言 上一期我们通过分配路由地址,在url中接收位置参数并传递给控制器方法, 并且在控制器内简单地打印输出接收的参数. 本期我们尝试着使用laravel的模板功能,把控制器内组装好的数据渲染到视图模板 ...

  5. laravel $request 多维数组取值_3分钟短文 | Laravel 内3种数据校验的写法,你喜欢哪一个?...

    引言 web应用程序公开访问几乎没有不带用户交互的,难免要接收用户输入的奇奇怪怪的东西.对于后端程序,必须对输入的内容进行有效性过滤. 这就是本文的重点,说一说laravel中输入请求的校验. 学习时 ...

  6. 拼装sql_3分钟短文 | Laravel复杂SQL超多WHERE子句,本地作用域你没用过

    引言 使用框架就是为了方便把注意力集中在逻辑上,而不用关心与数据库操作的方方面面.Laravel提供的 eloquent orm 使用面向对象的方式封装了PDO数据库操作,使用起来非常方便,对于复杂的 ...

  7. mvc 前段定义变量_3分钟短文 | Laravel blade模板里优雅地定义PHP变量

    引言 Laravel秉持MVC的设计理念,在V = view 中放置视图相关的内容.特别是 blade 模板引擎带来了很强大的解析方式. 与传统的PHP与HTML写作一团方式不容,Blade 使用特定 ...

  8. laravel框架api接口返回Validate Request 一直重定向问题

    Validate Request 一直重定向问题 | Laravel China 社区

  9. php定义一个学生类_3分钟短文 | PHP获取函数参数名,和类定义的常量,都要反射...

    引言 本文我们分享两个知识点,算是PHP编程中的稍微高阶一点的用法,一般不会用到.可是有了这个思路之后,你对于自己的冗余代码,应该会有想法了. 获取函数形参列表 我们在写程序的时候,不可能所有功能逻辑 ...

最新文章

  1. 【高并发】面试官问我:为啥局部变量是线程安全的?
  2. Mac OS X下Maven的安装与配置
  3. 一个星期+4轮面试终拿下offer,进阶学习
  4. new chosen courses at ifm
  5. java 数组中某个数出现的概率_剑指Offer解题报告(Java版)——排序数组中某个数的个数 38...
  6. idea,eclipse创建多模块项目
  7. python docx库安装_详解python中docx库的安装过程
  8. oracle如何获取自增id,oracle实现自增id
  9. 使用了未初始化的局部变量_Java 成员变量和局部变量
  10. 如何制作多合一Windows镜像
  11. arduino 读取模拟电压_【Arduino官方教程】基础示例(六):读取模拟电压
  12. 本科英语计算机,计算机本科生英语简历范文
  13. [UOJ#405/LOJ#2863][IOI2018]组合动作(交互)
  14. 用友t3服务器系统管理软件,T3用友通系统管理常见问题及解决方案
  15. mysqldump 备份报 Warning: A partial dump from a server that has GTIDs will by default include the..
  16. 算法---兔子生小兔子
  17. vue echarts柱状图 隐藏坐标轴刻度线等 横向显示百分比
  18. linux+rel+安装教程,pika安装教程
  19. 适合Java零基础小白学习的Java零基础教程
  20. HelloWord回顾

热门文章

  1. \V110\Microsoft.CppCommon.targets(347,5): error MSB6006: “CL.exe”已退出,代码为 -1073741515。的解决方法
  2. 在Linux部署Nodejs项目,一旦断掉XShell就会导致服务被停掉,真的很郁闷~怎么办?果断用forever
  3. Class101–如何高效地构建强大的数字绘画
  4. windows 系统无法启动windows event log 服务
  5. 九章算法班L8 Array Number
  6. 中国现代化进程专题讲座——有感
  7. 使用appium做自动化测试时,send_keyss只能输入字母数字,无法输入中文
  8. SQL Server 与 ORACLE 的区别
  9. 剑指offer 重建二叉树 python
  10. Vue源码终笔-VNode更新与diff算法初探