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

Herencia Php Clase Conexion

Estas en el tema de Herencia Php Clase Conexion en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Saludos Reciente me estoy iniciando en php, y quiero orientarme por la modalidad orientada a objetos, he leido mucho, y he visto algunos videos que ...
  #1 (permalink)  
Antiguo 15/04/2010, 11:13
Avatar de 2102325  
Fecha de Ingreso: octubre-2009
Ubicación: Santo Domingo RD
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 1
Herencia Php Clase Conexion

Saludos

Reciente me estoy iniciando en php, y quiero orientarme por la modalidad orientada a objetos, he leido mucho, y he visto algunos videos que me han ayudado, ahora bien no me gusta hacer las cosas como otro las hace, me gusta implementar mi forma, creo que asi somos todos...

En fin, mi duda es la siguiente estoy intentando crear una clase Conexion que herede de otra clase llamada Configuracion y no he podido hacerlo aun me esta dando Error...

Este es el listado de errores en pantalla disculpen la puesta en codigo php

Código PHP:

Notice
Undefined variableservidor in C:wampwwwPruebas PHP OOPManejadorDeArticulos.php on line 8

Notice
Undefined variableusuario in C:wampwwwPruebas PHP OOPManejadorDeArticulos.php on line 8

Notice
Undefined variableclave in C:wampwwwPruebas PHP OOPManejadorDeArticulos.php on line 8

Notice
Undefined variabledatabase in C:wampwwwPruebas PHP OOPManejadorDeArticulos.php on line 8

Fatal error
Undefined class constant 'getServidor' in C:wampwwwPruebas PHP OOPConexionDb.php on line 14 
Este es mi codigo

Código PHP:

<?php
    
class ConfiguracionDB{
        private 
$servidor "localhost";
        private 
$usuario "root";
        private 
$clave "";
        private 
$database "pruebas";
        
            public function 
__construct($servidor$usuario$clave$database){
                
$this->servidor $servidor;
                
$this->usuario $usuario;
                
$this->clave $clave;
                
$this->database $database;
            }
            
            public function 
getServidor(){
                return 
$this->servidor;
            }
            
            public function 
getUsuario(){
                return 
$this->usuario;
            }
            
            public function 
getClave(){
                return 
$this->clave;
            }
            
            public function 
getDatabase(){
                return 
$this->database;
            }
    
    }
?>
Aqui donde hago la herencia

Código PHP:

<?php
include('ConfiguracionDb.php');
    class 
ConexionDb extends ConfiguracionDb{
        private 
$link;
        private 
$resultQuery;

        
        public function 
__construct($servidor$usuario$clave$database){
            
parent::__construct($servidor$usuario$clave$database);
            
$this->conectarDb();
        }
        
        public function 
conectarDb(){

//aqui tengo este error
//Fatal error: Undefined class constant 'getServidor' in C:\wamp\www\Pruebas PHP OOP\ConexionDb.php on line 14

//y mi pregunta es si es posible hacer eso que estoy haciendo pasar por parametros la llamada de las funciones...

            
$this->link mysql_connect(parent::getServidorparent::getUsuarioparent::getClave);
            
mysql_select_db(parent::getDatabase$this->link);
        }
        
        public function 
ejecutarSQL($sentenciaSQL){
            
mysql_query($sentenciaSQL$this->link);
        }
        
        public function 
consltarDb($sentenciaSQL){
            
$this->resultQuery mysql_query($sentenciaSQL$this->link);
            return 
$this->resultQuery;
        }
        
        public function 
cerrarConexion($link){
            
mysql_close($this->link);
        }
        
        
    }

Código PHP:

<?php
include('ConexionDb.php');
include(
'Articulo.php');
    class 
ManejadorDeArticulos{
        private 
$conexion;
    
        public function 
__construct(){
        
            
//Esta linea me dice que las variables que paso por parametro no estan definidas
            //y si las quito me dice que tengo que pasarlas...
            //Notice: Undefined variable: servidor in C:\wamp\www\Pruebas PHP OOP\ManejadorDeArticulos.php on line 8
            //tengo 4 errores del antes mensionado, me imagino que por los 4 parametros     
            
$this->conexion = new ConexionDb($servidor$usuario$clave$database); 
            
            
        }
        
        public function 
agregarArticulo($articulo){
        
            
$descripcion $articulo->getDescripcion();
            
$precio $articulo->getPrecio();
            
$cantidad $articulo->getCantidad();
            
$query "INSERT INTO articulos (descripcion, precio, cantidad)
            VALUES('$descripcion', '$precio','$cantidad')"
;
            
$this->conexion->ejecutarSQL($query);
        }

    }
?>
Es todo.... espero aprender algo nuevo en esto... agradesco el timpo tomado en leer mi mensaje...
de veras Gracias...
  #2 (permalink)  
Antiguo 15/04/2010, 11:26
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Herencia Php Clase Conexion

Sin mirar mucho los codes, veo q la clase base tiene los atributos privados, por lo q solo serán visibles desde la misma clase. Deberías ponerlos protected si deseas "verlos" desde la clase hija
  #3 (permalink)  
Antiguo 15/04/2010, 12:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Herencia Php Clase Conexion

Otra cosa es que si estas heredando directamente no tienes que usar parent::getServidor, si no $this->getServidor().

Por otro lado revisa tu herencia, tu clase Conexión no debería de heredar tu clase Configuración ya que no tienen una relación, más bien tu clase Conexión debería de implementar a tu clase Configuración, por ejemplo:
Código PHP:
Ver original
  1. $config = new Configuracion( $datos.. );
  2. $conexion = new Conexion( $config );

Saludos.
  #4 (permalink)  
Antiguo 16/04/2010, 10:53
Avatar de 2102325  
Fecha de Ingreso: octubre-2009
Ubicación: Santo Domingo RD
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Herencia Php Clase Conexion

Cita:
Iniciado por eulloa Ver Mensaje
Sin mirar mucho los codes, veo q la clase base tiene los atributos privados, por lo q solo serán visibles desde la misma clase. Deberías ponerlos protected si deseas "verlos" desde la clase hija

Gracias por tu respuesta eulloa es algo que no habia tomado en cuenta cuando se trata de herencia el nivel de acceso, agradesco mucho tu tiempo en leer mi mensaje...

Saludos desde RD
  #5 (permalink)  
Antiguo 16/04/2010, 10:56
Avatar de 2102325  
Fecha de Ingreso: octubre-2009
Ubicación: Santo Domingo RD
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Herencia Php Clase Conexion

Cita:
Iniciado por GatorV Ver Mensaje
Otra cosa es que si estas heredando directamente no tienes que usar parent::getServidor, si no $this->getServidor().

Por otro lado revisa tu herencia, tu clase Conexión no debería de heredar tu clase Configuración ya que no tienen una relación, más bien tu clase Conexión debería de implementar a tu clase Configuración, por ejemplo:
Código PHP:
Ver original
  1. $config = new Configuracion( $datos.. );
  2. $conexion = new Conexion( $config );

Saludos.
En cuanto a ti GatorV tambien agradesco tu tiempo, eso de la herencia es yo por estar inventando en realidad ya he hecho mi clase conexion de otra manera y me funciona, es solo por andar probando codigo y ver su funcionamiento pero de todos modos agradesco tus sugerencias son muy utiles para mi...

Saludos a ti tambien desde RD

Etiquetas: clase, conexion, herencia, php
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 18:28.