Php 删除CodeIgniter函数中的重复代码
我们使用CodeIgniter包装一些内部函数,并以json显示结果 有时,我们的内部函数可能会在屏幕上打印调试字符串。因此,我们已经开始使用输出缓冲来捕获任何调试,并将其添加到结果Php 删除CodeIgniter函数中的重复代码,php,codeigniter,ob-start,Php,Codeigniter,Ob Start,我们使用CodeIgniter包装一些内部函数,并以json显示结果 有时,我们的内部函数可能会在屏幕上打印调试字符串。因此,我们已经开始使用输出缓冲来捕获任何调试,并将其添加到结果$data['response']['debug']=$ob 当我们开始将此代码放到大多数公开的CI函数中时,这似乎工作得非常好 我们现在似乎经常重复这个代码流 将“重复”部分提取到通用模板(需要时调用)的最佳方法是什么?(并非每个函数都实现了这一点——只是大多数函数) 示例代码: public function s
$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
}
如果您有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.';
}
});
并使用如下代码:
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个函数中并调用它们,这同样令人讨厌,但会为您节省一些空间。我不确定“我们正在使用CodeIgniter包装一些内部函数”是什么意思,但您可能希望通过“内部函数”查看控制器挂钩,我指的是我们的遗留代码(这通常是隐藏在公众视野之外的)。我们通过json公开了其中的一些。也许你可以把答案再扩展一点?