I made this Singleton pattern that I saw on a site and found it great, well what I wanted. However something is going wrong because I have the error:
Fatal error: Uncaught Error: Using $this when not in object context in /opt/lampp/htdocs/myschool/DAO/Conncetion.php:37
Stack trace: #0 /opt/lampp/htdocs/myschool/Login.php(18):DAO\Connection::getInstance() #1 /opt/lampp/htdocs/myschool/login.php(5):Login->loginconnect() #2 {main} thrown in /opt/lampp/htdocs/myschool
/DAO/Conncetion.php on line 37
And if I put function __construct () {} as private or protected then yes for that reason. I've read about using $ this in a context where it is not an object. However I want to use this command because of the idea of loading the variables dynamically by the functions.
This is the class:
class Connection
{
public static $instance;
private static $dbtype = "mysql";
private static $host = "localhost";
private static $port = "3306";
private static $user = "root";
private static $password = "";
private static $db = "school";
/*Metodos que trazem o conteudo da variavel desejada
@return $xxx = conteudo da variavel solicitada*/
private static function getDBType() {return self::$dbtype;}
private static function getHost() {return self::$host;}
private static function getPort() {return self::$port;}
private static function getUser() {return self::$user;}
private static function getPassword(){return self::$password;}
private static function getDB() {return self::$db;}
function __construct() {
}
public static function getInstance()
{
if(!isset(self::$instance)){
self::$instance = new PDO($this->getDBType().":host=".$this->getHost().";port=".$this->getPort().";dbname=".$this->getDB(), $this->getUser(), $this->getPassword());
self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
self::$instance->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_EMPTY_STRING);
}
return self::$instance;
}
private function __clone()
{
}
private function __wakeup()
{
}
}