Ainda movido pelo espirito natalino, resolvi postar aqui um conceito bastante usado em desenvolvimento OO (orientado a objetos) tanto na linha desktop quanto web. O Padrão singleton é bem utilizado em conceitos simples de persistência tanto de dados quanto de conexões com o banco, etc.. Vamos lá..
O conceito singleton é utilizado para se instanciar uma unica vez uma determinada classe.. Ou seja, ao invés de se ter várias instanciações de uma determinada classe, você tem uma unica instancia definida no inicio.. Esse instancia é utilizada durante todo o processo de uso do sistema, ou enquanto a mesma não for expirada..
Temos como principal utilização o acesso ao banco.. Isso em alguns casos é um grande gargalo pois em cada uso do dito cujo em padrôes comuns, é feita uma nova conexão com o banco.. Se o mesmo nao estiver bem configurado ou se não houver uma estrutura muito boa do serviço, pode-se estourar o limite de conexões com grande facilidade.
Vamos ao bicho..
CÓDIGO
class Conexao{
private static $instancia;
private $db;
private function __construct(){
}
public static function getConexao(){
if(is_null(self::$instancia)){
self::$instancia = new Conexao();
}
return $self::$instancia;
}
public function Conectar(){
$mypdo = new PDO('mysql:host=localhost;port=3306;dbname=teste','root','senha123', array(PDO::ATTR_PERSISTENT => true));
$this->db = $mypdo;
return $this->db;
}
}
Isso garante que se o objeto $instancia for nulo, ele será instanciado com o objeto $db ativo.
Faça a chamada da conexao para dentro de sua classe ativa usando a seguinte linha:
CÓDIGO
class Site extends App{
private $db;
private $login;
public function __construct($caminho){
if(isset($_SESSION['login'])){
$this->login = $_SESSION['login'];
}
$this->db = Conexao::getConexao()->Conectar();
}
.
.
.
}
Isso instanciará o objeto $db da classe conexao na sua classe Site ao qual será trabalhada!
Espero ter ajudado com esse tutorial muito teórico, mas de grande utilidade..
Grande abraço e Boas Festas!












