示例报错解决
thinkphp6开发文档 自定义命令行 示例用php think hello
报了一个错:
Trim():不推荐将NULL传递给字符串类型的参数#1($STRING)
来看一下示例代码:
trim()函数用在的代码的地方是:
$name = trim($input->getArgument('name'))
然后再来看看我们运行的命令是什么:
php think hello
明显没有带了参数,所以trim($input->getArgument('name'))
的$input->getArgument('name')
就是NULL
,trim()函数是不推荐trim(NULL)这样写的,就是参数不推荐是NULL,所以我们这样改一下:
$name = trim($input->getArgument('name') ?? '')
如果没有传name这个值就用空字符串来代替NULL,问题就解决了。
示例理解
再来,我们从上面把这个示例给跑起来了,那我们来理解一下thinkphp这个自定义指令吧。
目录结构是这样的:
第一种可以直接在app目录下去创建command
这个命令行文件夹,然后再在这个文件夹下面新建一个Hello.php
文件,接着在config
文件夹下面找到console.php
这个文件,在里面配置一下:
配置一下hello
对应的是 app\command\Hello
这个文件
Hello.php文件内容如下:
如果你直接这样写echo('hello'); 那么直接php think hello
的时候就是hello%
。那我们来看看示例
添加命令参数
加了name
参数,1、左右去空格 2、如果没有的话就是thinkphp,输出就是Hello,thinkphp!
比如php think hello jack
,那么输出就是Hello,jack!
添加选项
添加city
选项
php think hello jack --city shanghai
输出
Hello jack!
From shanghai