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

duda con herencias

Estas en el tema de duda con herencias en el foro de Frameworks y PHP orientado a objetos en Foros del Web. tengo una clase para conectar a mysql: Código PHP: <?php class  Mysql  {     private  $_server      =  "localhost" ;     private  $_user      =  "user" ;     private  $_pass      ...
  #1 (permalink)  
Antiguo 29/01/2012, 06:25
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
duda con herencias

tengo una clase para conectar a mysql:

Código PHP:
<?php
class Mysql 
{
    private 
$_server     "localhost";
    private 
$_user     "user";
    private 
$_pass     "pass";
    private 
$_db         "db";
    
    private 
$_conexion;
    private 
$_flag         false;


    public function 
__construct()
    {
        
$this->_connect();
    }

    
    private function 
_connect()
    {
        
$this->_conexion mysql_connect($this->_server$this->_user$this->_pass);
        if(
$this->_conexion){
            if(
mysql_select_db($this->_db$this->_conexion)){
                
$this->_flag true;
                    return 
$this->_conexion;
            }else{
                print 
"No se ha seleccionado BD";    
            }
        }else{
            print 
"Error de conexion";    
        }
    }
    
    
    public function 
query($query)
    {
        return 
mysql_query($query);
    }

    public function 
close()
    {
        if(
$this->_flag == true){
            
mysql_close($this->_conexion);
        }
    }
?>
Y desde una segunda clase, hago lo siguiente:

Código PHP:
<?php
include("_class/_mysql.php");

class 
Operacion extends Mysql
{
    public function 
__construct()
       {
         
$this->sql();
    }

       private function 
sql()
       {

        
$sql $this->query("SELECT * FROM tabla") or die(mysql_error());

        }
}

$operacion = new Operacion();

?>
Y me da el error de mysql:
Código PHP:
No database selected 
¿Que es lo que hago mal?

Un saludo

Última edición por dadam; 29/01/2012 a las 07:38
  #2 (permalink)  
Antiguo 29/01/2012, 11:40
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: duda con herencias

Te falta llamar el método _connect() desde la clase Operación, ya que es privado y si no llamas al constructor nunca va a conectar.

Ya sea en el constructor parent::__construct(); o $c = new Mysql();

Me reservo comentarios.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 30/01/2012, 06:17
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: duda con herencias

gracias, ¿que tipo de comentarios?
  #4 (permalink)  
Antiguo 30/01/2012, 17:49
 
Fecha de Ingreso: julio-2007
Mensajes: 109
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: duda con herencias

No puedes herenciar la clase Mysql,
lo que tienes que hacer es instancearla de esta manera
$this->conexion = new Mysql();

y dentro de tu otra clase, llamarla asi:

$sql = $this->query("SELECT * FROM tabla", $this->conexion) or die(mysql_error());

Saludos,
  #5 (permalink)  
Antiguo 31/01/2012, 04:39
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: duda con herencias

y por qué no puede hacerse? es solo por entender un poco mejor el tema.
  #6 (permalink)  
Antiguo 31/01/2012, 09:56
 
Fecha de Ingreso: julio-2007
Mensajes: 109
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: duda con herencias

Ok, la conexion a la base se hace una sola vez, y siempre al inicio del programa,
sabiendo esto, antes de hacer algun tipo de query a cualquier tabla,

hay que instancear la clase de conexion, en tu caso : new Mysql();
y llamar tambien al metodo, _connect();

eso es lo que estaba faltando en tu codigo,

entons, no es necesario, que herencies de MYSQL,
solo hace falta que lo instancies a MYSQL dentro de las nuevas clases que estes creando,

al herencia MYSQL, estarias creando nuevamente MYSQL, y el metodo _connect(),
y eso seria rebundancia,

Saludos,
  #7 (permalink)  
Antiguo 31/01/2012, 11:51
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: duda con herencias

gracias por la aclaracion

Etiquetas: clase, herencias, 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 23:22.