gracias snaft_j1 por responder.
No ubiece conocido el uso de las clases abstractas, si no lo ubieces usado aqui para ilustrarme tu codigo :).
Te expondo mis dudas.
1 - Al definir 4 metodos abstractos: DeleteCommand,InsertCommand,SelectCommand,UpdateCo mmand. estamos obligando a que todas las clases que extiendan de la clase abstracta DbProvider definan estos 4 metodos no ??.
2 - Como seria el mejor uso para DbConnect ?. se que este metodo seran usados por todas las demas clases hijas y que no se nesecitaran cambiarla. tu me pones que le mande como parametros los datos de conexion. entonces mas o menos podria ser algo asi.
Código PHP:
public function DbConnect( $server , $user , $pass , $bd ) {
$handle = mysql_connect($server,$user,$pass);
if($handle)
$ok = mysql_select_db($bd,$handle);
if(!$ok)
return false;
else
return $handle;
}
Trabajemos con la clase Cliente que tendria por ejemplo 4 campos basicos.
Id , Nombres, Apellidos, Email. y queramos implementar SelectCommand. haber si mas o menos entiendo. lo aria asi.
Código PHP:
class Cliente extends DbProvider {
private $id;
private $nombres;
private $apellidos;
private $email;
private $registro = Array();
public function setId($id){
$this->id = $id;
}
public function DeleteCommand(){
}
public function InsertCommand(){
}
public function UpdateCommand(){
}
public function SelectCommand(){
$sql="select * from cliente where id_cliente=".$this->id;
$tb = mysql_query($sql);
if ($tb){
$row = mysql_fetch_array($tb, MYSQL_ASSOC);
$this->registro = $row;
}
}
public function getRegistro(){
return $this->registro;
}
}
$claseCliente = new Cliente;
$claseCliente->DbConnect('localhost','root','','bdPrueba');
$claseCliente->setId('83');
$claseCliente->SelectCommand();
echo "<pre>";
print_r($claseCliente->getRegistro());
echo "</pre>";
de este modo en todas las clases que instanciaria tendria que estar pasandole los datos de coneccion, esto seria un modo nose redundante diria yo. otra que lee visto es usar el contructor, que ahora esta en blanco y poner algo como esto.
Código PHP:
public function __construct() {
$this->DbConnect('localhost','root','','bdPrueba');
}
con esto cada ves que instancio una clase extendida automaticamente ejecutaria el metodo DbConnect y no tendria que estar pasandole los datos de conexion en cada instancia.
un problema que tube aqui fue. al declarar el construct como protected , me tira un error que no entiendo.
Fatal error: Call to protected DbProvider::__construct() from invalid context in C:\xampp\webdav\phpPOO\ejemploMantenimientos.php on line 100
Bueno, me gustaria tu opinion de como lo llevo hasta aqui. y si tienes una aclaracion me gustaria leerla para ver donde esta mi error.
desde ya te agradesco el interes por ayudarme a entender como es el uso de la POO.
Gracias.