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;
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