Foros del Web » Programando para Internet » PHP »

Clases y problemas

Estas en el tema de Clases y problemas en el foro de PHP en Foros del Web. Veamos tengo una clase class manejaDB{ // Codigo } class paginado{ //codigo } Ahora bien 1.- En que parte instancío un objeto de manejaDb para ...
  #1 (permalink)  
Antiguo 28/03/2003, 18:14
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 16 años
Puntos: 1
Clases y problemas

Veamos tengo una clase

class manejaDB{
// Codigo
}


class paginado{
//codigo
}

Ahora bien

1.- En que parte instancío un objeto de manejaDb para poder utilizar unos métodos que existen ahi como getConexion() y query().?

2.- Como utilizo ese objeto dentro de esa clase paginado?

3.- Debo colocar las dos clases en el mismo archivo o pueden estar separados y solo mandarlo llamar mediante include() o require()

Pregunto esto por que por más que lo he intentado no sale y solo he podido hacer funcionar la clase de webstudio pasandole como parametro el $objeto->getConexion() como parametro de $Conn y no se si esto este bien como POO o deba instanciarlo desde dentro de la clase paginado.

Bueno la ultima sería la 4ª pregunta .

gracias
  #2 (permalink)  
Antiguo 29/03/2003, 05:04
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
para usar metodos de una clase en la otra:

Código PHP:

class primera
{
function 
hola()
{
echo 
"hola";
}
}

class 
segunda extend primera
{
function 
adios()
{
primera::hola();
//parent::hola(); tb serviria
}

Con el nuevo modelo de OOP de ZE2 tienes muchisimas mas cosas como tipos de variables de la clase, tipo de funciones (publicas, privadas ...) funciones de constructores, clonacion ....
__________________
Usuario registrado de Linux #288725
  #3 (permalink)  
Antiguo 29/03/2003, 15:56
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

1.- Depende de donde necesites el objeto manejaDB. Si solo lo necesitas dentro del objeto paginado, lo creas dentro de paginado. Si tambien lo usas fuera de paginado, pues lo creas fuera.

2.- Yo crearia una variable miembro en la clase para almacenar el objeto manejaDB. Si solo necesitas el objeto manejaDB dentro de paginado, en el constructor de paginado crearia el objeto y lo asignaria a la variable miembro. Si manejaDB lo creaste fuera de paginado, se lo pasaria como parametro al constructor y se lo asignaria a la variable miembro.

3.- Yo las pondria en ficheros separados y las incluiria con require_once().

4.- Una vez creado el objeto y asignado a la variable miembro, dentro de paginado usaria el objeto por medio de la variable miembro.

En tu caso funciona psando ese parametro porque paginado espera un valor del tipo que devuelve esa funcion, pero luego internamente no usa el objeto manejaDB. Debes sustituir las llamadas a las funciones que usa paginado para acceder a la BD por las de tu objeto manejaDB.

Epplestun, tal como dices tu ejemplo es para ejecutar metodos de otra clase, que no es lo mismo que ejecutar metodos de otro objeto, que creo que es a lo que se referia urjose.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 29/03/2003, 23:03
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 16 años
Puntos: 1
Bueno por ejemplo si creo el objeto manejaDb dentro del constructor de paginado como acceso al objeto que creo
por ejemplo:


Hago esto

Paginado de Webstudio:

Constructor:

Código PHP:
    function paginado() 
    { 
        
$manejaDb = new manejaDB();
        
$this->conn($manejaDb->getConexion()); 
    } 
// function 
Hasta aqui todo anda bien si todo lo demás lo dejo igual pero a la hora de por ejemplo cambiar esto:

Código PHP:
        if(!$this->rsmysql_query($query_count$this->conn()) )) 
        { 
            
$this->error("Ocurrió un error al ejecutar el query <i><b>\"$query_count\"</b></i>. La base dijo : <b>".mysql_error()."</b>."); 
            return 
false
        }
// Fin If 
Por esto:

Código PHP:
        if(!$this->rs$manejaDb->query($query_count) )) 
        { 
            
$this->error("Ocurrió un error al ejecutar el query <i><b>\"$query_count\"</b></i>. La base dijo : <b>".mysql_error()."</b>."); 
            return 
false
        }
// Fin If 
Me manda el siguiente error:

Código PHP:

Fatal error
Call to a member function on a non-object in d:inetpubwwwrootsitioswebintento2clasesclass.paginado.php on line 337 
Por eso mi pregunta de como acceso a dicho objeto dentro de la clase paginado, cuando uso $manejaDb->getConexion() dentro del constructor del paginado funciona perfectamente, pero una vez que quiero usar $manejaDb->algo() me sale ese error
  #5 (permalink)  
Antiguo 30/03/2003, 00:06
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 16 años
Puntos: 1
Pos ya funciono:

Código PHP:
    function paginado() 
    { 
        
$this->manejaDb = new manejaDB();
        
$this->conn($this->manejaDb->getConexion()); 
    } 
// function 
Y para acceder a un método dentro de la clase:

Código PHP:
        if(!$this->rs$this->manejaDb->query($query) )) 
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




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