2010-11-23 13 views
5

tengo una clase PHP así:Anulación de los padres en PHP

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

Mi problema es que quiero anular esta clase con una nueva que realiza operaciones de bases de datos más privilegiadas con un usuario db diferente.

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

¿Qué debo hacer aquí?

+1

Conjunto Las credenciales de base de datos particulares en el constructor generalmente son una mala idea. Si realmente necesita conectar las credenciales de la base de datos en una clase, debe crear un método de fábrica, como static fn create() {return new self ('localhost', ...); } – amik

Respuesta

6

Debe pasar las credenciales al constructor de todos modos:

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

Entonces no necesitan la herencia sólo puede utilizar:

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

Pero si realmente quiere la herencia todavía se podía hacer esto:

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

Realmente deberías explicar por qué esto resuelve el problema en cuestión. –

Cuestiones relacionadas