Hola amigos, bueno la duda que tengo es con este ejemplo que les voy a mostrar, ya que se supone que estoy extendiendo la clase
DBq con la
DB.
Código PHP:
class DB {
protected $db;
protected $c;
public function __construct($host,$dbus,$dbpass,$db_){
$this->db = $db_;
$this->c = mysql_pconnect($host,$dbus,$dbpass);
}
public function cl(){
return mysql_close($this->c);
}
}
class DBq extends DB {
public $q;
public $rows;
public function __construct($qQ){
if(empty($qQ))return false;
$this->q = mysql_db_query($this->db,$qQ,$this->c);
$this->rows = mysql_num_rows($this->q);
}
public function f(){
return mysql_free_result($this->q);
}
}
new DB("localhost","marcopoloaz","1234","esc");
$consulta1=new DBq("SELECT * FROM alumnos");
$consulta2=new DBq("SELECT * FROM alumnos WHERE id=1");
for($i=0;$i<$consulta1->rows;$i++){
$a=mysql_fetch_array($consulta1->q);
echo $a[id] ."<br>";
}
Bueno ps si ven "se supone se supone" que en donde esta
Código PHP:
$this->q = mysql_db_query($this->db,$qQ,$this->c);
en la clase
DBq deberia de funcionar porque son variables de la clase
DB a la que se extendio.
De este modo si funciona bien mi objetivo
Código PHP:
class DB {
protected static $db;
protected static $c;
public function __construct($host,$dbus,$dbpass,$db_){
self::$db = $db_;
self::$c = mysql_pconnect($host,$dbus,$dbpass);
}
public function cl(){
return mysql_close(self::$c);
}
}
class DBq extends DB {
public $q;
public $rows;
public function __construct($q){
if(empty($q))return false;
$this->q = mysql_db_query(parent::$db,$q,parent::$c);
$this->rows = mysql_num_rows($this->q);
}
public function f(){
return mysql_free_result($this->q);
}
}
new DB("localhost","marcopoloaz","1234","esc");
$consulta1=new DBq("SELECT * FROM alumnos");
$consulta2=new DBq("SELECT * FROM alumnos WHERE id=1");
for($i=0;$i<$consulta1->rows;$i++){
$a=mysql_fetch_array($consulta1->q);
echo $a[id] ."<br>";
}
Pueden ver que cambie el acceso a la las variables
Código PHP:
$this->q = mysql_db_query(parent::$db,$q,parent::$c);
Bueno ps quisiera saber porque no puede obtener el valor de las variables si primero se ejecuta el
constructor de la clase
DB que da el valor a las variables, y se supone que en
DBq esta extendida, y en el segundo ejemplo si funciona.
Bueno grax a todos.
Saludos
se cuidan
adios....
:]