代码点火器从模型返回false


codeigniter returning false from models

只是想知道是否有必要在我的代码点火器模型函数中使用else {return false;},或者if () {}就足够了,并且在失败的情况下默认返回false?

控制器:

if ($this->model_a->did()) {    
                $data["results"] = $this->model_a->did();
                echo json_encode($data);
            }

型号:

public function did()
    {    
      //some code here    
        if ($query && $query->num_rows() > 0) {
            return $query->result_array();
        } else {
            return false;
        }    
    }

在控制器中——首先测试阴性条件——如果模型中的方法没有返回任何结果

if ( ! $data["results"] = $this->model_a->did() ) {    
    $this->showNoResults() ; }
else { echo json_encode($data); } 

也就是说,如果没有任何结果,那么转到showNoResults()方法。如果结果确实返回,则将其分配给$data

然而-在模型中的这种情况下,我也会将ELSE返回设为false-有些人会说它是额外的代码,但对我来说,它使发生的事情更加清楚。与总是返回一些值的方法进行比较。

我认为这更像是一个PHP问题,而不是CodeIgniter问题。您可以通过调用模型方法和var_dump-ing结果来轻松地测试这一点。如果PHP中的方法没有返回任何内容,则返回值为NULL。

尽管我在CI中有很多返回false的经验,但这并不是一个优点,因为如果你在这里返回false,那么你需要在控制器中返回一个无用的条件,你应该这样做,这将为你节省至少一些行代码

if ($query && $query->num_rows() > 0) {
return $query->result_array();
} else {
return array();
}   

因此,返回一个数组可以避免许多其他错误,比如类型错误。