2010-11-23 78 views
5

构造我有这样一个PHP类:覆盖父母的父母在PHP

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

我的问题是,我想重写这个类有一个新的,用不同的数据库用户进行更多特权的数据库操作。

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

我应该在这里做什么?

+1

套装在构造函数中使用特定的数据库凭证通常是一个坏主意。如果你真的需要将数据库凭证连接到一个类中,你应该创建一个工厂方法,比如静态的fn create(){return new self('localhost',...); } – amik 2015-10-22 13:08:04

回答

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

你应该真的解释为什么这解决了手头的问题。 – 2015-12-07 19:29:26