Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Duda con una clase

Estas en el tema de Duda con una clase en el foro de Frameworks y PHP orientado a objetos en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 23/05/2008, 16:50
Avatar de marcopoloaz06  
Fecha de Ingreso: julio-2007
Ubicación: México
Mensajes: 457
Antigüedad: 16 años, 9 meses
Puntos: 11
Exclamación Duda con una clase

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->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->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->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->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->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....
:]
__________________
Aerolíneas Alicia :D
  #2 (permalink)  
Antiguo 23/05/2008, 16:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Duda con una clase

Tema trasladado a PHP Orientado a Objetos.

En tu constructor de tu clase heredada te falta llamar a parent::__construct();

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:05.