如何在不显式声明if else条件的情况下添加经过身份验证的方法?(Codeigniter, PHP)


How do I add authenticated methods without explicitly stating an if else condition? (Codeigniter, PHP)

我有一个名为events的控制器(类)。有些方法,如get,应该对所有用户(公共)都可访问。但是,某些方法(如add和edit)应该只有经过身份验证的用户才能访问。

代替:

public function add(){
//if user is logged in add event
}
public function edit(){
//if user is logged in edit event
}

有没有更优雅的方法来实现这个?也许是这样的"如果用户登录"条件是自动检查每次我调用一个方法?(不需要每次都明确说明)。

我认为它可能有一个父类的事件,有未经身份验证的方法,然后扩展它,包括身份验证的方法,但我不确定如果/如何工作。

作为参考,我有以下事件控制器:

class Events extends MY_Controller{
    public function get(){
        echo "List of events";
    }
    public function add(){
        echo "Adding an event";
    }
    public function edit(){
        echo "Editing an event";
    }
}

你可以这样做

class Events extends MY_Controller{
    public function get(){
        echo "List of events";
    }
    public function addedit($edit_id=0){
        // check login user first
        if(!$this->session->get('userid')){ redirect('login')}
        if($this->input->post('submit'))
        {
          if($edit_id==0)
          {
              // insert record
          }
          else
          {
             // Edit record using edit_id
          }
        }
      if($edit_id>0)
      {
       // get array record using edit_id to display in form 
       $data['record']=$this->MODEL->getRecordById($edit_id)
      }
        $this->load->view('addeditform',$data)
    }
}