Php 在使用继承的codeigniter项目中遇到设计问题

Php 在使用继承的codeigniter项目中遇到设计问题,php,codeigniter,inheritance,Php,Codeigniter,Inheritance,我目前正在用codeigniter重新设计我的项目,以设置它,这样我就有了一个User.php超类。然后,这个类有两个子类“carer\u user”和“admin\u user”,当我在超级类中有一个名为login的方法时,首先调用的是谁的索引。在此之后,我将决定登录的用户类型,并显示该特定用户类型的相关页面。每一个都是不同的。我如何设置它目前似乎是错误的,因为我在超类用户登录。对于每个用户类型,设置略有不同,对数据库运行不同的查询,创建不同的会话。此外,我认为在登录已被验证的情况下,从超类调

我目前正在用codeigniter重新设计我的项目,以设置它,这样我就有了一个User.php超类。然后,这个类有两个子类“carer\u user”和“admin\u user”,当我在超级类中有一个名为login的方法时,首先调用的是谁的索引。在此之后,我将决定登录的用户类型,并显示该特定用户类型的相关页面。每一个都是不同的。我如何设置它目前似乎是错误的,因为我在超类用户登录。对于每个用户类型,设置略有不同,对数据库运行不同的查询,创建不同的会话。此外,我认为在登录已被验证的情况下,从超类调用子类方法是不合适的。我的问题是。登录应该在自己的控制器类中吗?在这里完成验证后,我可以根据结果调用admin_user或carer_user中的方法。或者,如果我坚持我现在的方式,我的代码如下所示,用于我的用户控制器方法。谢谢

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class User extends CI_Controller {

    var $loggedin = FALSE;
    var $cdata;
    var $privilege;

    function __construct()
    {
         parent::__construct();
         $this->load->model("dbaccess");

        $this->cdata =array( "warning" => "","email"=> "","password"=> "","logintime"=>"","start"=>"","end"=>""
        ,"diff"=>"","totalhours"=>"","dis"=>$this); 

    }


public function index()
{
    if($this->session->userdata('email'))
    {
        $this->load->view('carerview',$this->cdata);
    }
    else
    {
        $this->load->view('mainview',$this->cdata);
    }

}



public function login()
{

       if(isset($_POST['email'])  && isset($_POST['password']))
       {
         $this->cdata['email'] = $_POST['email'] ;
         $this->cdata['password'] = $_POST['password'] ;
        }

        if($this->cdata['email'] !=="" && $this->cdata['password'] !=="" && $this->loggedin === FALSE)
        {

            $this->loggedin = $this->dbaccess->check_input($this->cdata['email'],$this->cdata['password']);
            if($this->loggedin)
            {
                $data =array("email"=>$this->cdata['email']);
                $this->privilege = $this->dbaccess->get_privilege($data,"userinfo");
                $this->open_page();
                $this->loggedin= TRUE;

            }
            else
            {
                $this->cdata['warning']="Check failed ! Please try again";
                $this->load->view('mainview',$this->cdata);
            }


        }
        else if($this->loggedin ===TRUE)
        {
            //check helpermethod. go to relevant page.
            $this->open_page();
        }
       else
       {
            $this->cdata['warning']="Check failed ! Please try again";
            $this->load->view('mainview',$this->cdata);
        }
}

private function open_page()
{
    switch($this->privilege)
    {
        case 0 :
        $this->carerview();
        break;
        case 1:
        $this->admin();
        break;


    }
}
}

?>


我的问题是登录方法应该放在哪里?事实上,我不能让一个超类在它的子类中调用一个方法。

多重继承是不可能的。您可以使用接口。
请查看此处以获得更好的解释

多重继承是不可能的。您可以使用interfacesagain,这不是多重继承。除非我疯了这只是常规继承,因为只有一个超类!?好的,我想我只需要设置一个库,登录控制器可以用来创建不同类型的seision,并在“carer_用户”的情况下将数据发送到数据库。哇,没有人帮我解决这个问题,不能从另一个控制器调用控制器对我来说有点问题。我打算尝试使用hmvc