trim(): Passing null to parameter #1 ($string) of type string is deprecated

888 阅读1分钟

示例报错解决

thinkphp6开发文档 自定义命令行 示例用php think hello报了一个错:

截屏2022-11-28下午2.08.45.png

Trim():不推荐将NULL传递给字符串类型的参数#1($STRING)

来看一下示例代码:

截屏2022-11-28下午2.16.42.png

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这个自定义指令吧。

目录结构是这样的:

截屏2022-11-28下午2.24.27.png

第一种可以直接在app目录下去创建command这个命令行文件夹,然后再在这个文件夹下面新建一个Hello.php文件,接着在config文件夹下面找到console.php这个文件,在里面配置一下:

截屏2022-11-28下午2.27.51.png

配置一下hello 对应的是 app\command\Hello这个文件

Hello.php文件内容如下:

截屏2022-11-28下午2.30.50.png

如果你直接这样写echo('hello'); 那么直接php think hello的时候就是hello% 。那我们来看看示例

添加命令参数

image.png

加了name参数,1、左右去空格 2、如果没有的话就是thinkphp,输出就是Hello,thinkphp!

比如php think hello jack,那么输出就是Hello,jack!

添加选项

添加city选项

php think hello jack --city shanghai

输出

Hello jack!
From shanghai