我正在尝试拨打其他function
下的nested
function
作为例子:
function _get_stats() {
function _get_string() {
$string = 'Nested Function Not Working';
return $string;
}
}
public function index() {
$data['title'] = $this->_get_stats() . _get_string();
$this->load->view('home', $data);
}
现在,当我在网页浏览器blank
中运行页面时,会显示。
任何建议或帮助对我都有很大帮助..提前感谢
答案 0 :(得分:1)
该函数并非真正嵌套,但调用_get_stats()
将导致_get_string
被声明。 PHP中没有嵌套函数或类。
调用_get_stats()
两次或更多次会导致错误,说明函数_get_string()
已经存在且无法重新声明。
在_get_string()
之前调用_get_stats()
会引发错误,指出函数_get_string()
不存在。
在您的情况下,如果您真的想这样做(这是一种不好的做法),请执行以下操作:
protected function _get_stats() {
if (!function_exists("_get_string")){
function _get_string() {
$string = 'Nested Function Not Working';
return $string;
}
}
}
public function index() {
$this->_get_stats(); //This function just declares another global function.
$data['title'] = _get_string(); //Call the previously declared global function.
$this->load->view('home', $data);
}
<强> BUT 强>
您正在寻找的可能是method chaining
。在这种情况下,您必须返回一个包含所需函数的有效对象。
示例:
protected function getOne(){
//Do stuff
return $this ;
}
protected function getTwo(){
//Do stuff ;
return $this ;
}
public function index(){
$this
->getOne()
->getTwo()
;
}
答案 1 :(得分:1)
如果您有空白页面,则可能是500“服务器错误”响应,即PHP代码中的致命错误。
当PHP执行到达其声明时, _get_string
将被定义,即在_get_stats
执行此声明时。
在index()
中,_get_string
可能在您调用时尚未声明。
尽管在全局命名空间中定义了嵌套函数(例如与JS相反),但您可能希望移动_get_string
声明。