Foros del Web » Programando para Internet » PHP »

Duda con instancias a clases en php

Estas en el tema de Duda con instancias a clases en php en el foro de PHP en Foros del Web. Buenas tardes quiciera saber si es correcto hacer la instancia de la clase padre en cada una de las funciones de la clase hijo, pongo ...
  #1 (permalink)  
Antiguo 09/07/2011, 10:56
 
Fecha de Ingreso: mayo-2009
Mensajes: 242
Antigüedad: 15 años, 7 meses
Puntos: 2
Pregunta Duda con instancias a clases en php

Buenas tardes quiciera saber si es correcto hacer la instancia de la clase padre en cada una de las funciones de la clase hijo, pongo una clase donde hago eso:

Código PHP:
 include_once("global.php");
 
 class 
clientes extends _GLOBAL_
 
{
     public function 
main(){
        
//instancia a la clase _GLOBAL_ 
        
$this->db = new _GLOBAL_;
        
//conexion a base de datos
        
$this->db->conexion();
        
//consulta de clientes
        
$consulta $this->db->consulta("SELECT idCliente,empresa,direccion,municipio,estado,pais FROM clientes ORDER BY idCliente DESC");
        
$resultado $this->db->fetch_array($consulta);
        
$nombreSeccion "Ver / Actualizar / Eliminar - Clientes";
        include_once(
"./vista/cabecera.php");
        include_once(
"./vista/mostrarclientes.php");
        include_once(
"./vista/pie.php");
     }
     
     public function 
altaCliente(){
        
$nombreSeccion "Alta - Cliente";
        include_once(
"./vista/cabecera.php");
        include_once(
"./vista/altaclientes.php");
        include_once(
"./vista/pie.php");         
     }
     
     public function 
realizarAltaCliente(){
        
//instancia a la clase _GLOBAL_ 
        
$this->db = new _GLOBAL_;
        
//conexion a base de datos
        
$this->db->conexion();
        
//valores para edicion
        
$empresa utf8_decode($_POST['empresa']);
        
$contacto utf8_decode($_POST['contacto']);
        
$dir utf8_decode($_POST['dir']);
        
$cp utf8_decode($_POST['cp']);
        
$pais utf8_decode($_POST['pais']);
        
$estado utf8_decode($_POST['estado']);
        
$municipio utf8_decode($_POST['municipio']);
        
$email utf8_decode($_POST['email']);
        
$telfax utf8_decode($_POST['telfax']);
        
$obs utf8_decode($_POST['obs']);
        
//edición de cliente
        
$consulta $this->db->consulta("INSERT INTO clientes(empresa,direccion,cp,municipio,estado,pais,correo,telfax,nombre_contacto,observaciones) VALUES ('".$empresa."','".$dir."','".$cp."','".$municipio."','".$estado."','".$pais."','".$email."','".$telfax."','".$contacto."','".$obs."')");
        
$ultimoID $this->db->ultimoId();
        
        if(
$consulta == true){
            echo 
$ultimoID;
        }else{
            echo 
"Error al guardar cliente: ".mysql_error();
        }
     }
     
     public function 
realizarAltaFacturaCliente(){
        
//instancia a la clase _GLOBAL_ 
        
$this->db = new _GLOBAL_;
        
//conexion a base de datos
        
$this->db->conexion();
        
//valores para edicion
        
$idCliente utf8_decode($_POST['idCliente']);
        
$razon utf8_decode($_POST['razon']);
        
$rfc utf8_decode($_POST['rfc']);
        
$calle utf8_decode($_POST['calle']);
        
$numext utf8_decode($_POST['numext']);
        
$numint utf8_decode($_POST['numint']);
        
$colonia utf8_decode($_POST['colonia']);
        
$cp utf8_decode($_POST['cp']);
        
$pais utf8_decode($_POST['pais']);
        
$estado utf8_decode($_POST['estado']);
        
$municipio utf8_decode($_POST['municipio']);
        
//edición de cliente
        
$consulta $this->db->consulta("INSERT INTO facturacion(idCliente,razon_social,rfc,calle,num_ext,num_int,colonia,cp,municipio,estado,pais) VALUES ('".$idCliente."','".$razon."','".$rfc."','".$calle."','".$numext."','".$numint."','".$colonia."','".$cp."','".$municipio."','".$estado."','".$pais."')");
        
$ultimoID $this->db->ultimoId();
        
        if(
$consulta == true){
            echo 
$ultimoID;
        }else{
            echo 
"Error al guardar cliente: ".mysql_error();
        }
     }
     
     public function 
editarCliente($arrayValores){
        
//instancia a la clase _GLOBAL_ 
        
$this->db = new _GLOBAL_;
        
//conexion a base de datos
        
$this->db->conexion();
        
//id del cliente 
        
$id $arrayValores[2];
        
//consulta de clientes
        
$consultaCliente $this->db->consulta("SELECT clientes.idCliente AS idCliente,clientes.empresa AS empresa,clientes.direccion AS direccion,clientes.cp AS cp,clientes.municipio AS municipio,clientes.estado AS estado,clientes.pais AS pais,clientes.correo AS correo,clientes.telfax AS telfax,clientes.nombre_contacto AS contacto,clientes.observaciones AS obs FROM clientes WHERE clientes.idCliente = $id");
        
$resultadoCliente $this->db->fetch_array($consultaCliente);
        
$consultaFactura $this->db->consulta("SELECT facturacion.idFacturacion AS idFacturacion,facturacion.razon_social AS razon,facturacion.rfc AS rfc,facturacion.calle AS calle,facturacion.num_ext AS numext,facturacion.num_int AS numint,facturacion.colonia AS colonia,facturacion.cp AS cpfact,facturacion.municipio AS municipiofact,facturacion.estado AS estadofact,facturacion.pais AS paisfact FROM facturacion WHERE facturacion.idCliente = $id");
        
$resultadoFactura $this->db->fetch_array($consultaFactura);
        
$nombreSeccion "Editar - Cliente";
        include_once(
"./vista/cabecera.php");
        include_once(
"./vista/editarclientes.php");
        include_once(
"./vista/pie.php");         
     }
      
     public function 
realizarEdicionCliente(){
        
//instancia a la clase _GLOBAL_ 
        
$this->db = new _GLOBAL_;
        
//conexion a base de datos
        
$this->db->conexion();
        
//valores para edicion
        
$idC $_POST['idC'];
        
$empresa utf8_decode($_POST['empresa']);
        
$contacto utf8_decode($_POST['contacto']);
        
$dir utf8_decode($_POST['dir']);
        
$cp utf8_decode($_POST['cp']);
        
$pais utf8_decode($_POST['pais']);
        
$estado utf8_decode($_POST['estado']);
        
$municipio utf8_decode($_POST['municipio']);
        
$email utf8_decode($_POST['email']);
        
$telfax utf8_decode($_POST['telfax']);
        
$obs utf8_decode($_POST['obs']);
        
//edición de cliente
        
$consulta $this->db->consulta("UPDATE clientes SET empresa = '".$empresa."', direccion = '".$dir."', cp = '".$cp."', municipio = '".$municipio."', estado = '".$estado."', pais = '".$pais."', correo = '".$email."', telfax = '".$telfax."', nombre_contacto = '".$contacto."', observaciones = '".$obs."'  WHERE idCliente = $idC");
        
        if(
$consulta == true){
            echo 
"true";
        }else{
            echo 
"Error al editar cliente: ".mysql_error();
        }
     }
     
     public function 
realizarEdicionFacturaCliente(){
        
//instancia a la clase _GLOBAL_ 
        
$this->db = new _GLOBAL_;
        
//conexion a base de datos
        
$this->db->conexion();
        
//valores para edicion
        
$idF $_POST['idF'];
        
$razon utf8_decode($_POST['razon']);
        
$rfc utf8_decode($_POST['rfc']);
        
$calle utf8_decode($_POST['calle']);
        
$numext utf8_decode($_POST['numext']);
        
$numint utf8_decode($_POST['numint']);
        
$colonia utf8_decode($_POST['colonia']);
        
$cp utf8_decode($_POST['cp']);
        
$pais utf8_decode($_POST['pais']);
        
$estado utf8_decode($_POST['estado']);
        
$municipio utf8_decode($_POST['municipio']);
        
//edición de cliente
        
$consulta $this->db->consulta("UPDATE facturacion SET razon_social = '".$razon."', rfc = '".$rfc."', calle = '".$calle."', num_ext = '".$numext."', num_int = '".$numint."', colonia = '".$colonia."', cp = '".$cp."', municipio = '".$municipio."', estado = '".$estado."', pais = '".$pais."'  WHERE idFacturacion = $idF");
        
        if(
$consulta == true){
            echo 
"true";
        }else{
            echo 
"Error al editar datos de factura: ".mysql_error();
        }
     }
     
     public function 
borrarCliente(){
        
//instancia a la clase _GLOBAL_ 
        
$this->db = new _GLOBAL_;
        
//conexion a base de datos
        
$this->db->conexion();
        
//id del cliente 
        
$id $_POST["idCliente"];
        
//consulta de clientes
        
$borrarFactura $this->db->consulta("DELETE FROM facturacion WHERE idCliente = $id");
         if(
$borrarFactura){
             
$borraCliente $this->db->consulta("DELETE FROM clientes WHERE idCliente = $id");
             if(
$borraCliente){
                 echo 
"true";
             }else{
                 echo 
"Error al borrar datos de cliente: ".mysql_error();     
             }
         }else{
             echo 
"Error al borrar datos de facturacion del cliente: ".mysql_error();
         }         
     }
     
 } 
De no ser asi como puedo hacer para crear una sola instancia de la clase global en este caso y que pueda utilizarla en todas las funciones la clase hija. Saludos

Última edición por kriss8725; 09/07/2011 a las 11:18
  #2 (permalink)  
Antiguo 09/07/2011, 11:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Duda con instancias a clases en php

Se supone que si una clase extiende a otra, hereda los métodos de la clase padre.

No hay necesidad de instanciar la clase padre dentro de una clase hija.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/07/2011, 11:47
 
Fecha de Ingreso: mayo-2009
Mensajes: 242
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Duda con instancias a clases en php

Cita:
Iniciado por pateketrueke Ver Mensaje
Se supone que si una clase extiende a otra, hereda los métodos de la clase padre.

No hay necesidad de instanciar la clase padre dentro de una clase hija.
Quite las instancias en todas las funciones y me mando este error:
Cita:
Fatal error: Call to a member function conexion() on a non-object in /home/christian/public_html/_admin/class/clientes.php on line 8
  #4 (permalink)  
Antiguo 09/07/2011, 11:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Duda con instancias a clases en php

¿Pero sigues usando $this->db->conexion() o $this->conexion()?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 09/07/2011, 11:56
 
Fecha de Ingreso: mayo-2009
Mensajes: 242
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Duda con instancias a clases en php

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Pero sigues usando $this->db->conexion() o $this->conexion()?
Sigo utilizando $this->db->conexion() eso esta mal???
  #6 (permalink)  
Antiguo 09/07/2011, 12:02
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 9 meses
Puntos: 9
Respuesta: Duda con instancias a clases en php

Si, tenes que usar $this->connection

Saludos!
  #7 (permalink)  
Antiguo 09/07/2011, 12:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 242
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Duda con instancias a clases en php

Gracias, por sus respuestas

Etiquetas: clases, instancias, mysql
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 14:05.