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

Problemas con clases para mysql

Estas en el tema de Problemas con clases para mysql en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Estimados: Tengo el siguiente error, al llamar a mi objeto en el Index, para hacer una consulta en mi base de datos: error: Call to ...
  #1 (permalink)  
Antiguo 09/07/2010, 10:05
 
Fecha de Ingreso: noviembre-2009
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta Problemas con clases para mysql

Estimados:
Tengo el siguiente error, al llamar a mi objeto en el Index, para hacer una consulta en mi base de datos:

error: Call to private SelecFull::__construct() from invalid context

ClasesBD.php
Código PHP:
Class BD{
    private 
$_host;
    private 
$_user;
    private 
$_pass;
    protected 
$link;
    private static 
$instancia// Una propiedad para tener la instancia de la clase


    //FUNCION CONTRUCTOR PARA INICIALIZAR DATOS DE LA CLASE
    
Private Function __construct(){
        require 
"config.php";
        
$this->_host=$host;
        
$this->_user=$user;
        
$this->_pass=$pass;
    }

    
/***********************************************************************************************************
    SINGLETON*/
    // Desde aqui se obtiene la instancia OJO con el static
    
Public static function getInstance () {
        if (!isset(
self::$instancia)) {
            
$obj __CLASS__;
            
self::$instancia = new $obj;
        }
        return 
self::$instancia;
    }
      
// Para evitar la clonacion de este objeto
    
private function __clone() {
        throw new 
Exception('No se permite clonar este objeto.');
    }
    
/*FIN DEL SINGLETON
    /*************************************************************************************************************/


    //CONECCION A LA BD
    
Protected Function conn(){
        
$this->link=mysql_connect($this->_host$this->_user$this->_pass);
        if(!
$this->link){
            die(
'No pudo conectarse: ' mysql_error());
        }else{
          return 
$this->link;
        }
    }
}

//CONSULTA SQL
//REALIZA UN SELECT * DENTRO DE LA TABLA
Class SelecFull{
    private 
$busca;
    private 
$conn;
    private 
$result;


    Private Function 
__construct(){
        
//NOS CONECTAMOS A LA BD
        
$this->conn BD::getInstance();
    }
    
    
//SE PIDE LA SENTENCIA SQL Y SE REALIZA LA CONSULTA
    //DEVUELVE EL ARRAY CON EL RESULTADO
    
Public Function Consulta($cadenaSql){
        
$this->busca mysql_query($cadenaSql);
        if(!
$this->busca){
            die (
"No se puede realizar la consulta".mysql_error());
        }else{
            
$this->result=mysql_fetch_object($this->busca);
            return 
$this->busca;
        }
    }
    

Se que esta mal la llamada a la Clase BD pero no se como unir las 2 clases para obtener la conección a la BD.

Muchas gracias.
  #2 (permalink)  
Antiguo 09/07/2010, 10:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 16 años, 1 mes
Puntos: 2135
Respuesta: Problemas con clases para mysql

Prueba usar mejor self::$instancia = new self(); Por otro lado como es que construyes tu objeto SelectFull?

Saludos.
  #3 (permalink)  
Antiguo 09/07/2010, 10:44
 
Fecha de Ingreso: noviembre-2009
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problemas con clases para mysql

Cita:
Iniciado por GatorV Ver Mensaje
Prueba usar mejor self::$instancia = new self(); Por otro lado como es que construyes tu objeto SelectFull?

Saludos.
A si perdon, no lo agregué, aqui va:

Código PHP:
<?php
include("Libs/ClasesBD.php");

//REALIZAMOS UNA CONSULTA
$r=new SelecFull();
$r->setCadenaSql("SELECT * FROM Usuarios");
print_r($r);
Y perdón pero no entendí self::$instancia = new self();. No se como aplicar eso.

Muchas gracias y perdón si mis preguntas son tontas, pero como dije antes, estoy tratando de aprender esto, y siempre hay cosas que en los manuales no aparecen.
  #4 (permalink)  
Antiguo 09/07/2010, 11:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 16 años, 1 mes
Puntos: 2135
Respuesta: Problemas con clases para mysql

El problema es que en tu segunda clase, pones tu constructor como privado, necesitas ponerlo como publico para que lo puedas instanciar desde fuera.

Saludos.

Etiquetas: clases, 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 22:08.