2010-11-23 14 views
5

内の親の親のコンストラクタ:オーバーライドPHP

class DB extends mysqli{ 
    public function __construct(
     { 
     parent::__construct('localhost','user','password','db'); 
     } 
} 

私の問題は、私は別のDBユーザーとのより多くの権限を持つデータベース操作を実行し、新しいもので、このクラスを上書きしたいということです。

class adminDB extends DB{ 
    public function __construct(
     { 
     ?? 
     } 
    } 
} 

ここで何をすればよいですか?

+1

セットコンストラクタ内の特定のデータベース資格証明は一般的には悪い考えです。データベース資格情報をクラスにハードワイヤリングする必要がある場合は、static fn create(){return new self( 'localhost'、...);のようにファクトリメソッドを作成する必要があります。 } – amik

答えて

6

あなたはとにかくコンストラクタに資格情報を渡す必要があります。そして、

class DB extends mysqli { 
    public function __construct($host, $user, $password, $db) 
    { 
     parent::__construct($host, $user, $password, $db); 
    } 
} 

は、あなたがすることができます継承を必要としないだけで使用します。

$adminDb = new DB($adminHost, $adminUser, $adminPassword, $db); 
$nonAdminDb = new DB($host, $user, $password, $db); 

しかし、あなたが本当にしたい場合は、まだやるべきことができ、相続この:

class AdminDB extends DB { 
    public function __construct() { 
     parent::__construct('adminhost','adminuser','adminpassword','db'); 
    } 
} 
-1
<?php 
    class mohona{ 
     public $name; 
     public $age; 
     public $fname; 
     public $lname; 
     public function __construct($cname,$cage,$cfname,$clname){ 
      $this->name=$cname; 
      $this->age=$cage; 
      $this->fname=$cfname; 
      $this->lname=$clname; 


     } 
     public function getMohona(){ 
      echo "Full Name: ".$this->fname." ".$this->lname." ".$this->name."<br/>Age: ".$this->age."<br/>"; 
     } 
    } 
    class ibrahim extends mohona{ 
     public $relational_status; 
     public $relation; 
     public $contact; 
     public function __construct($cname,$cage,$cfname,$clname,$crelational_status,$crelation,$ccontact){ 
      parent::__construct($cname,$cage,$cfname,$clname); 
      $this->relational_status=$crelational_status; 
      $this->relation=$crelation; 
      $this->contact=$ccontact; 
     } 
     public function getIbrahim(){ 
      echo "Full Name: ".$this->fname." ".$this->lname." ".$this->name."<br/>Age: ".$this->age."<br/>"."Relational Status: ".$this->relational_status."<br/>Maritual Status: ".$this->relation."<br/>Contact Status: ".$this->contact; 
     } 
    } 
    $oMohona=new mohona("Mohona","20","Nafis","Anjum"); 
    $oIbrahim=new ibrahim("Ibu","25","Ibrahim","Akbar","Single","Unmarried","blocked"); 
    echo $oMohona->getMohona(); 
    echo $oIbrahim->getIbrahim(); 
?> 
+1

これが実際に問題を解決する理由を実際に説明する必要があります。 –

関連する問題