Laravel入坑指南(8)——控制台程序
我们知道,php代码不仅可以用web的形式对外提供服务,同时也可以在命令行下执行。
对于原生的php来说,假设我们有一个php文件,名为Command.php,如果想要在控制台下执行这个文件,那么我们有两种办法:
方法一:(适用于Windows和Linux)
php Command.php
#如果$PATH中的php不是你的目标php,那么可以指定php的绝对路径
/www/server/php/bin/php Command.php
#Command.php正常情况下也会指明绝对路径
方法二:(仅适用于Linux)
在Command.php的第一行指明解释器路径
#!/www/server/php/bin/php
<?php
//这里写php代码
echo "hello php";
然后将Command.php赋上x(可执行)权限,在控制台下输入./Command.php即可运行
同样的,因为Laravel是以php为基本语言的框架,同样可以支持在控制台运行。在Laravel框架体系统,规定了一套创建适用于本框架的方法。现在就让我们一起创建并运行Laravel的控制台程序:
步骤一:利用artisian创建控制台程序类
php artisan make:command TestCmd --command=Test
这一句命令运行之后,文件/app/Console/Commands/TestCmd.php就会被创建。命令中的TestCmd是创建的文件名(也是类名),Test是控制台执行命令时,用到的名字。
在创建的TestCmd类中,业务代码就写在handle()函数中。

步骤二:控制台执行
php artisan Test #这里的Test就是建时--command参数指定的名字
步骤三:控制台参数的传递
在TestCmd.php创建的时候,我们在--command指定了一个调用参数,名字叫Test。这个参数,是执行是用到的名字,也是TestCmd类中的$signature成员的值。

接下来,我们要讨论的参数传递有两种方式,都和这个$signature成员有关。在Laravel中通过控制台向业务代码传递参数,都需要在$signature进行配置,这里我们用具体的例子来说明:
示例一:

调用时,我们使用命令:
php artisan Test Jack
在handle()函数中我们使用argument()成员函数,便可以得到Jack这个值。因为在$signature中用的配置是{user?},所以这个参数是可选的;如果没有那个?号则参数就是必须的:
public function handle()
{
$this->info($this->argument("user"));
}
示例二:

调用时,我们使用命令:
php artisan Test --id=Jack
在handle()函数中我们使用option()成员函数便可以得到对应的参数值,这里的id选项是可选的,当控制台没有传递时,取到的则是NULL:
public function handle()
{
echo $this->option("id");
}
上面两种示例的参数类型可以混合使用。
到这里,命令行这一话题就接近尾声了。天色也不早了,大家下期见: )
--------------------------- 我是可爱的分割线 ----------------------------
最后博主借地宣传一下,漳州编程小组招新了,这是一个面向漳州青少年信息学/软件设计的学习小组,有意向的同学点击链接,联系我吧。
Laravel入坑指南(8)——控制台程序的更多相关文章
- C语言入坑指南-被遗忘的初始化
前言 什么是初始化?为什么要初始化?静态变量和局部变量的初始化又有什么区别?实际应用中应该怎么做?本文将一一回答这些问题. 什么是初始化 初始化指的是对数据对象或者变量赋予初始值.例如: int va ...
- Rust入坑指南:鳞次栉比
很久没有挖Rust的坑啦,今天来挖一些排列整齐的坑.没错,就是要介绍一些集合类型的数据类型."鳞次栉比"这个标题是不是显得很有文化? 在Rust入坑指南:常规套路一文中我们已经介绍 ...
- Rust入坑指南:亡羊补牢
如果你已经开始学习Rust,相信你已经体会过Rust编译器的强大.它可以帮助你避免程序中的大部分错误,但是编译器也不是万能的,如果程序写的不恰当,还是会发生错误,让程序崩溃.所以今天我们就来聊一聊Ru ...
- Rust入坑指南:朝生暮死
今天想和大家一起把我们之前挖的坑再刨深一些.在Java中,一个对象能存活多久全靠JVM来决定,程序员并不需要去关心对象的生命周期,但是在Rust中就大不相同,一个对象从生到死我们都需要掌握的很清楚. ...
- Rust入坑指南:齐头并进(上)
我们知道,如今CPU的计算能力已经非常强大,其速度比内存要高出许多个数量级.为了充分利用CPU资源,多数编程语言都提供了并发编程的能力,Rust也不例外. 聊到并发,就离不开多进程和多线程这两个概念. ...
- electron入坑指南
electron入坑指南 简介 electron 实际集成chrome浏览器和node环境, 运行你写的网页 app 基本目录结构 index.html 名称可以不是index, 这个文件与普通网页的 ...
- Elasticsearch入坑指南之RESTful API
Elasticsearch入坑指南之RESTful API Tags:Elasticsearch ES为开发者提供了非常丰富的基于Http协议的Rest API,通过简单的Rest请求,就可以实现非常 ...
- ElasticSearch入坑指南之概述及安装
---恢复内容开始--- ElasticSearch入坑指南之概述及安装 了解ElasticSearch ElasticSearch(简称ES)基于Lucene的分布式全文检索引擎.使用ES可以实现近 ...
- eclipse中导入外部包却无法查看对应源码或Javadoc的入坑指南
eclipse中导入外部包却无法查看对应源码或Javadoc的 入坑指南 出现这个错误的原因是,你虽然导入了.jar包,但没有配置对应的Javadoc或源码路径,所以在编辑器中无法查看源 码和对应AP ...
- Rust入坑指南:核心概念
如果说前面的坑我们一直在用小铲子挖的话,那么今天的坑就是用挖掘机挖的. 今天要介绍的是Rust的一个核心概念:Ownership.全文将分为什么是Ownership以及Ownership的传递类型两部 ...
随机推荐
- 0xGame 2023【WEEK4】Crypto WP
Danger Leak 查看代码 from random import * from secret import flag from Crypto.Util.number import * m = b ...
- PageHelper 分页不起作用
将 reasonable 设置为 false .
- [转帖]strace分析sqlplus登录慢问题
一. 问题分析 有时会遇到sqlplus / as sysdba登录非常慢的问题,由于还没登录,通过数据库等待事件一般看不出来啥,需要用到strace这个分析利器.strace有很多参数,后面会列出, ...
- [转帖]TIDB-TIDB节点磁盘已满报警
一.背景 今日突然收到tidb节点的磁盘报警,磁盘容量已经超过了80%,但是tidb是不放数据的,磁盘怎么会满,这里就需要排查了 二.问题排查 解决步骤 1.df -h查看哪里占用磁盘比较多,然后通过 ...
- 【转帖】Linux 系统双网卡绑定 bond的7种模式
第一种模式:mod=0 ,即:(balance-rr) Round-robin policy(平衡抡循环策略)第二种模式:mod=1,即: (active-backup) Active-backup ...
- [转帖]ESXi下查看CPU 频率
https://www.jianshu.com/p/8943a4223ed7 查看CPU的固定频率 [root@localhost:/bin] esxcli hardware cpu list|gr ...
- [转帖]Linux:页表中PGD、PUD、PMD、TLB等概念介绍
1.PGD: Page Global Directory Linux系统中每个进程对应用户空间的pgd是不一样的,但是linux内核 的pgd是一样的.当创建一个新的进程时,都要为新进程 ...
- C# AsyncLocal 是如何实现 Thread 间传值
一:背景 1. 讲故事 这个问题的由来是在.NET高级调试训练营第十期分享ThreadStatic底层玩法的时候,有朋友提出了AsyncLocal是如何实现的,虽然做了口头上的表述,但总还是会不具体, ...
- C#不显示小数点0部分
c#去掉小数点后的无效0 ,保留指定位数的小数,比如10.0显示成10,小数部分会四舍五入 float value = 0.0500f; value.ToString("0.##" ...
- Postfix + Extmail 企业邮件服务器搭建
ExtMail套件用于提供从浏览器中登录.使用邮件系统的Web操作界面,而Extman套件用于提供从浏览器中管理邮件系统的Web操作界面.它以GPL版权释出,设计初衷是希望设计一个适应当前高速发展的I ...