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

extendiendo la classe ... una duda

Estas en el tema de extendiendo la classe ... una duda en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Ok.. Mi clase padre llamada a secas Db ... Código PHP: <?php class  Db  { var  $server = 'localhost' ; var  $user = 'insane' ; ...
  #1 (permalink)  
Antiguo 25/05/2007, 23:53
 
Fecha de Ingreso: mayo-2007
Ubicación: Home
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
extendiendo la classe ... una duda

Ok.. Mi clase padre llamada a secas Db ...
Código PHP:
<?php
class Db {

var 
$server='localhost';
var 
$user='insane';
var 
$psw='xxxxxx';
var 
$database='administrativo';
var 
$haystackQuerys=array(); 
var 
$connection;
var 
$id=0;
var 
$counter=0;
var 
$errorCounter;


function 
__construct(){

}

        function 
connect(){
            
            
$this->connectionmysql_pconnect($this->server,$this->user,$this->psw);
            
$this->usedb($this->database);        
        }

function 
getConnection(){

static 
$connectionSingleton=null;

    if(
null===$connectionSingleton){
    
    echo 
"<b>New</b><br>";
        
       
$connectionSingleton = new Db();
       
$connectionSingleton->connect();
       
       return 
$connectionSingleton;
        
    }else{
    
    echo 
"<b>Singleton</b><br>";
        
        return 
$connectionSingleton;
    }

function 
execute($querye="",$retry=boolean){

$queryx = ($querye =="") ? array_shift($this->haystackQuerys) : $querye;                
$result=mysql_query($queryx,$this->connection);
if(
$result)$this->counter++;else $this->errorCounter++;                
return 
$result $result mysql_error();

}    

        
}
//......
//...
?>
Mi otra clase
Código PHP:
class MysqlResultsInterpretations extends Db {



function 
MysqlResultsInterpretations(){
    
parent::getConnection();
}
    
function 
toSomething($sql){
  
$this->execute($sql);
}
    


El problema
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\www\veryImportantProject\lib\database\Db.class. php on line 875 ''la de el methodo ejecutar en Db

porque ???
sugerencias ??
gracias.

Última edición por insane; 26/05/2007 a las 00:22
  #2 (permalink)  
Antiguo 26/05/2007, 21:20
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
Re: extendiendo la classe ... una duda

Cambia:
Código PHP:
 $this->connectionmysql_pconnect($this->server,$this->user,$this->psw); 
Por:
Código PHP:
 $this->connectionmysql_pconnect($this->server,$this->user,$this->psw) or die(mysql_error()); 
  #3 (permalink)  
Antiguo 27/05/2007, 14:18
 
Fecha de Ingreso: mayo-2007
Ubicación: Home
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: extendiendo la classe ... una duda

Si bueno si hago eso ya se que si esta conectando bien.
ademas yo desaconsejo ese uso dadoq ue en caso de que conecte bien la asignacion ya no daria paso a un resource si no aun boolean y `puedes estar tronandote la cabeza checando que esta pasando..

no es eso, como sea.


No se si sea la mejor manera pero puse

Código PHP:
function MysqlResultsInterpretations(){
    
parent::getConnection();
    
$this->connection=parent->connection;

que a mi particular punto de vista esta mal dado que no respeta entonces la herencia.

bueno gracias, si alguien sabe de otra forma lo agradecere.
  #4 (permalink)  
Antiguo 27/05/2007, 16:15
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
Re: extendiendo la classe ... una duda

Ahora que veo tu clase, esta mal heredada, no entiendo para que implementas singleton de esa manera, si ya estas extendiendo la clase, no es necesario que la instancies desde dentro.

Te recomendaria que replantearas tu clase, ya que estas mezclando muchos conceptos.
  #5 (permalink)  
Antiguo 30/05/2007, 07:01
 
Fecha de Ingreso: abril-2007
Mensajes: 144
Antigüedad: 17 años
Puntos: 4
Re: extendiendo la classe ... una duda

En lugar de usar parent::getConection usa $this->getConection.
  #6 (permalink)  
Antiguo 02/06/2007, 08:37
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 5 meses
Puntos: 11
Re: extendiendo la classe ... una duda

Cuando extiendes una clase, la clase hija hereda automáticamente:

1) El contructor de la clase
2) Los métodos

Entonces veamos:

class A
{

function test() {

}

}

class B extends A

{

// Puedo llamar a todas las funciones de la clase A ya que se han heredado

$this->test();

}

Si no has definido ningún constructor para la clase B entonces se ejecuta el de la A, la clase Madre.

SAludos
  #7 (permalink)  
Antiguo 27/06/2007, 01:42
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 384
Antigüedad: 19 años, 3 meses
Puntos: 0
Re: extendiendo la classe ... una duda

Aprovecho este post para preguntar:

Y los metodos privados de la clase madre son visibles para la clase hijo?
__________________
m!ketrix
CINE25 - Red Social de Cine
byinspiroh
  #8 (permalink)  
Antiguo 27/06/2007, 08:20
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
Re: extendiendo la classe ... una duda

No, los metodos privados son independientes para cada clase, si quieres pasar una variable a la clase hija pero que no sea publica, tienes que usar una variable protected.

Saludos.
  #9 (permalink)  
Antiguo 28/06/2007, 03:54
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 384
Antigüedad: 19 años, 3 meses
Puntos: 0
Re: extendiendo la classe ... una duda

Perfecto, gracias. Tanto variables como metodos pueden ser PROTECTED me imagino, y se compartiran entre clases pero no seran publicas.
__________________
m!ketrix
CINE25 - Red Social de Cine
byinspiroh
  #10 (permalink)  
Antiguo 28/06/2007, 08:06
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
Re: extendiendo la classe ... una duda

Asi es, y pueden ser sobreescritas por la clase hija.

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 08:01.