如果在一个函数中调用 return 语句,将立即结束此函数的执行并将它的参数作为函数的值返回。 return 也会终止 eval() 语句或者脚本文件的执行。总结一下:
如果在全局范围中调用,则当前脚本文件中止运行。如果当前脚本文件是被 include 的或者 require 的,则控制交回调用文件。此外,如果当前脚本是被 include 的,则 return 的值会被当作 include 调用的返回值。如果在主脚本文件中调用 return ,则脚本中止运行。如果当前脚本文件是在 php.ini 中的配置选项 auto_prepend_file 或者 auto_append_file 所指定的,则此脚本文件中止运行。
更多信息见返回值。
1) 在函数中调用return,直接将后面的表达式计算值作为返回值返回;
2) 在全局范围中调用,脚本会中止运行,如果当前脚本文件是被include或者require的,则控制交回调用文件并且return值作为返回值;
3) 在主脚本中调用return,脚本会中止运行。
以thinkphp为例,一种典型的使用方法如下:
// 加载模块配置文件
if(is_file(MODULE_PATH.'Conf/config.php'))
C(include MODULE_PATH.'Conf/config.php');
/**
* 获取和设置配置参数 支持批量定义
* @param string|array $name 配置变量
* @param mixed $value 配置值
* @param mixed $default 默认值
* @return mixed
*/
function C($name=null, $value=null,$default=null) {
static $_config = array();
// 无参数时获取所有
if (empty($name)) {
return $_config;
}
// 优先执行设置获取或赋值
if (is_string($name)) {
if (!strpos($name, '.')) {
$name = strtoupper($name);
if (is_null($value))
return isset($_config[$name]) ? $_config[$name] : $default;
$_config[$name] = $value;
return;
}
// 二维数组设置和获取支持
$name = explode('.', $name);
$name[0] = strtoupper($name[0]);
if (is_null($value))
return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : $default;
$_config[$name[0]][$name[1]] = $value;
return;
}
// 批量设置
if (is_array($name)){
$_config = array_merge($_config, array_change_key_case($name,CASE_UPPER));
return;
}
return null; // 避免非法参数
}
我们看到C方法直接include配置文件,如果配置文件返回值是一个数组,将执行代码段if (is_array())后面的部分。其实这就是return语句在本文开头阐述的第二种使用方式。