我们正在使用CodeIgniter来包装一些内部函数并在json中显示结果。
有时我们的内部函数可能会在屏幕上打印调试字符串。所以我们已经开始使用输出缓冲来捕获任何调试并将其添加到结果$data['response']['debug'] = $ob;
由于我们已开始将此代码放入大多数公开公开的CI功能中,因此这似乎运作良好。
我们似乎现在正在重复这个代码流程。
将“重复”部分提取到需要时调用的常规模板的最佳方法是什么? (并非每个函数都实现了这一点 - 只是大多数)。
示例代码:
public function some_function($var){
ob_start(); //repeated
$this->load->model('some_model');
$result = $this->some_model->do_something($var);
if($result){
$data['response']['result'] = true;
}else{
$data['response']['error'] = 'Something not found.';
}
$ob = ob_get_clean(); //repeated
if($ob!=''){
$data['response']['debug'] = $ob; //repeated
}
$this->load->view('json',$data); //repeated
}
答案 0 :(得分:0)
如果你有PHP 5.3.0或更高版本,你可以这样做:
function debug_func($code){
ob_start(); //repeated
$code();
$ob = ob_get_clean(); //repeated
if($ob!=''){
$data['response']['debug'] = $ob; //repeated
}
$this->load->view('json',$data); //repeated
}
并使用您的代码:
debug_func(function(){
$this->load->model('some_model');
$result = $this->some_model->do_something($var);
if($result){
$data['response']['result'] = true;
}else{
$data['response']['error'] = 'Something not found.';
}
});
并像你那样做所有的代码。
当然,您也可以将重复的代码包装在2个函数中,然后调用它们,就像烦人一样,但会节省一些空间。