Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/03/2009, 13:42
oVuzZ
 
Fecha de Ingreso: octubre-2007
Mensajes: 21
Antigüedad: 17 años, 2 meses
Puntos: 0
Error con Abstract, Singleton

Buenas a todos, espero que puedan ayudarme el error que me sale es el siguiente.

Using $this when not in object context in

Código PHP:


abstract class Comandos
     
{
    

        function 
__set$key ,$value )
        {
            if( isset( 
$value ) )
            {
                
$this->$key $value;
                return 
true;    
            }
            
        }



        function 
__get$key )
        {
            if( isset( 
$this->$key ) )
            {
                return 
$this->$campo;
            }
            else
            {
              return 
NULL;
            }

        }
    }


class 
b2db extends Comandos
{
    public static 
$MySQLInst null;
    public static 
$SqlServerInstance null;
    public static 
$PostGrInstance null;
    private 
$dbhost "localhost";      // Host de la BD
    
private $dbuser "root";  // Nombre de Usuario de la BD
    
private $dbpwd;     // Password de la BD
    
private $dbname;        // Schema a usar
    
private $dbtype "mysql";  // Schema a usar
    
private $dbtables;        // Schema a usar
    
    
public function __construct(){}
    
    public static function 
setTypeDB$type )
    {
        
$this->__set'dbtype' $type );
    }
    
    public static function 
connection$dbname$dbuser=''$dbpwd$dbhost='' )
    {
        
        
$this->__set'dbname' $dbname );// error
        
$this->__set'dbuser' $dbuser );// error
        
$this->__set'dbpwd' $dbpwd );// error
        
$this->__set'dbhost' $dbhost );// error
        
        
$type $this->__get'dbtype' );// error
        
         
switch($type)
          {
           case 
'mysql':
             if(!isset(
self::$MySQLInst))
              {
                    
self::$MySQLInst =  new MySQL();
              }
               return 
self::$MySQLInst;
           break;
    
               case 
'mssql':
    
           if(!isset(
self::$SqlServerInstance))
            {
    
                
self::$SqlServerInstance =  new mssqlconnect();
            }
          return 
self::$SqlServerInstance;
          break;
    
          case 
'pgsql':
           if(!isset(
self::$PostGrInstance))
            {
    
                
self::$PostGrInstance =  new pgconnect();
            }
          return 
self::$PostGrInstance;
          break;
    
          }

      }

}


$MySQL b2db::connection("motor""carlos""jackasito");

$MySQL->dbname
Intento capturar con set los parametros de conexion, para luego adentro de cualquier motor de db ya sea mysql, mssql o pgsql pueda obtenerlos con get.

Si hago set adentro de cada motor de db si funciona, pero por que repetirlo puedo hacerlo afuera y que los datos esten para todos los motores para luego solo llamar a una funcion connect() y establesca la conexion.

Creo que el error sale por que en realidad b2db no se concidera como una clase por que instancia los motores de db no ella misma.

Aver si alguien me da una mano