Singleton

<< Click to Display Table of Contents >>

Navigation:  PDO >

Singleton

Previous pageReturn to chapter overviewNext page

 

Principal.php

 

use classes\base\Conexao;
 
$conexao = Conexao::getConexao();
 
var_dump($conexao::getAvailableDrivers());

 

Conexao.php

 

namespace classes\base;
 
use \PDO;
use \PDOException;
 
class Conexao {
 
    private const HOST = "localhost";
    private const USER = "root";
    private const DB = "aula";
    private const PASS = "123456";
    private const OPCOES = [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
        PDO::ATTR_CASE => PDO::CASE_NATURAL
    ];
 
    private static $instancia;
 
    /**
     * @return PDO
     */
    public static function getConexao(): PDO {
        if (empty(self::$instancia)) {
            try {
                self::$instancia = new PDO("mysql:host=" . self::HOST . ";dbname=" . self::DB,
                        self::USER,
                        self::PASS,
                        self::OPCOES
                );
            } catch (PDOException $ex) {
                die("Erro ao conectar " . $ex->getMessage());
            }
        }
 
        return self::$instancia;
    }
 
    // não permite instanciar com new
    final private function __construct() {
        
    }
 
    // não permite clonar
    final private function __clone() {
        
    }
}