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