控制对象存在的最佳方法

时间:2014-07-20 16:15:46

标签: php codeigniter doctrine-orm

在许多控制器中,我需要验证对象(URL中传递的ID)是否存在。

我实际上每个控制器都有这个骨架:

public function my_page($id){

$object = $this->Object_model->getObject($id);

if($object == NULL){ // If id mentions a non-existant object, redirect to home
  redirect("home");
}

/** MYCONTROLLER **/
}

这是一种好方法,最干净的方法吗?

其他一些选项是助手/模型方法/控制器方法......我不知道PHP的哲学是什么。

3 个答案:

答案 0 :(得分:0)

不要将控制器与路由应用程序的任务混合在一起。首先进行路由,然后根据给定的结果实例化一个控制器。

也许这个关于路由器的答案澄清了我的意思:How does MVC routing work?

答案 1 :(得分:0)

您的数据库查询的答案是布尔值,因此您必须检查它是否为FALSE,而不是NULL

public function my_page($id){

  $object = $this->Object_model->getObject($id);

  if($object === FALSE){
    redirect("home");
  }

  /** MYCONTROLLER **/
}

答案 2 :(得分:0)

    if ( ! $object = $this->Object_model->getObject( $id ) ) {
        redirect( "home" ) ;       }

更好的是Object_model总是返回一些是否有错误。

   $object = $this->Object_model->getObject( $id ) ;

   if ( $object->errorFlag == true ) {
   redirect( "sorry/" . $object->errorMsg ) ; }