写脚本时,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)即可;

 

posted on 2019-06-04 17:26  追风的浪子  阅读(1549)  评论(0)    收藏  举报

导航