写脚本时,exit 的用法深入理解
PHP exit() 函数
这个函数你确定真的理解吗?
exit() 函数输出一条消息,并退出当前脚本。
语法:
exit(status)
参数:
status:必需。规定在退出脚本之前写入的消息或状态号。状态号不会被写入输出。
说明
如果 status 是字符串,则该函数会在退出前输出字符串。
如果 status 是整数,这个值会被用作退出状态。退出状态的值在 0 至 254 之间。退出状态 255 由 PHP 保留,不会被使用。状态 0 用于成功地终止程序。
PHP exit() 和 die()
说明:die()和exit()都是中止脚本执行函数;其实exit和die这两个名字指向的是同一个函数,die()是exit()函数的别名。该函数只接受一个参数,可以是一个程序返回的数值或是一个字符串,也可以不输入参数,结果没有返回值。
参考:虽然两者相同,但通常使用中也有细微的选择性。例如:
当传递给exit和die函数的值为0时,意味着提前终止脚本的执行,通常用exit()这个名字
如:
exit(0);
当程序出错时,可以给它传递一个字符串,它会原样输出在系统终端上,通常使用die()这个名字。
$fp=fopen("./readme.txt","r") or die("不能打开该文件");
应用扩展:
场景:我们在实际中命令环境下调用脚本,有时候可能需要把返回值返回给调用的脚本,如:
shell脚本,文件名: 脚本demo.sh
#!/bin/sh
Cur_Dir=$(cd `dirname $0`; pwd)/hotel-platform
echo ${Cur_Dir}
ret=`$Cur_Dir/yii account/index 传入的参数 第2个参数`
if [ "$ret" == "" ]; then
# php脚本中没有其他输出,直接exit(status) 时,
echo "There is no return result"
else
# php脚本中存在 echo, var_dump 等输出时
echo "There are $ret Order to process"
fi
服务端的php脚本 accountController.php 的 index 方法:
public function actionIndex()
{
var_dump($_SERVER['argv']); //输出会作为返回值的一部分
echo 1; //输出会作为返回值的一部分
echo 2; //输出会作为返回值的一部分
exit(0); //数字的statu,不会输出,但是参数如果时字符串的类型,则也会作为返回值的一部分
}
调用shell,执行 demo.sh 即可。
结果如下:
/f/Boyu_code/hotel-platform
There are array(4) {
[0]=>
string(31) "F:/Boyu_code/hotel-platform/yii"
[1]=>
string(13) "account/index"
[2]=>
string(15) "传入的参数"
[3]=>
string(13) "第2个参数"
}
12 Order to process
发现屏幕上的输出,都填充在
echo "There are $count Order to process"
$count(count是shell脚本中调用php时的返回值) 的位置。
总结:php文件上的所有的输出,都会作为返回值的一部分。如果不想要返回值,则不用其他的输出语句,直接 exit(0)即可;
浙公网安备 33010602011771号