Iam當前在codeigniter中對我的項目進行重新設置,以便擁有User.php超類。這個類然後有2個子類「carer_user」和「admin_user」當記錄我有一個稱爲登錄的方法在超級類的whos索引首先被調用。在此之後,我將決定登錄哪個用戶類型並顯示該特定用戶類型的相關頁面。每個都不同。我如何設置目前似乎是錯誤的,因爲我有在超類用戶登錄。對於每個用戶類型設置稍有不同,再次運行不同的查詢數據庫,創建會話不同。我也不認爲它正確的做法來調用一個超類的子類方法,一個登錄已被驗證。我的問題是這個。應該登錄到它自己的控制器類中嗎?一旦驗證完成,我可以在admin_user或carer_user中調用一個方法,具體取決於結果。或者我應該堅持使用iam的方式,我的代碼顯示在我的用戶控制器方法的下面。謝謝!在codeigniter項目中使用繼承時遇到問題
<?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;
}
}
}
?>
再次我的問題是這裏的登錄方法應該放在哪裏?以及我無法真正擁有超類在其中一個子類中調用方法的事實。
多重繼承是不可能的。你可以再次使用接口 –
,這不是多重繼承。除非ive失去了我的想法。 :) – eoin