Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde galera, então decidi de vez entrar no PHP orientado a objeto, pois estou com projetos um tanto grande e estruturado vai ser complicado.
Bom tenho a seguinte class:
class Conexao extends PDO{
private static $instancia;
public function Conexao($dsn,$username = "",$password = ""){
//CONTRUTOR DO PDO
parent::__construct($dsn,$username,$password);
}
public static function fazInstancia(){
//SE A ISNTANCIA NAO EXISTE FAZ UMA
if(!isset(self::$instancia)){
try{
self::$instancia = new Conexao("mysql:host=localhost;dbname=tst","root","");
}catch(Exception $err){
echo 'Erro de conexão, tente novamente, se persistir entre em contato com o desenvolvedor do sistema.';
exit();
}
}
return self::$instancia;
}
}
Como eu criaria outra classe pra incluir os dados? Lembrando que essa eu acho assim:
Conexao::fazInstancia();
Grato desde já...
Olá, agradeço a atenção comigo, eu consegui aqui fazendo assim:
$var = Conexao::fazInstancia();
Com isso eu posso criar os prepares tranquilo e trabalhar com PDO normalmente, deve ser loucura minha ou total burrice, mas eu trabalha com PDO meio que estruturado, então acho que a cada acesso o usuário abre uma nova conexão com o banco, creio que isso possa de alguma forma pesar ou qualquer outra coisa. Então lendo um artigo vi que o eu poderia recuperar a conexão já aberta com singleton. Abraços.
Singleton é um anti-pattern em ambiente request-based como a web. Já houve muita discussão aqui no fórum e ainda há na internet, basta dar uma pesquisada.
Se você quiser recuperar a conexão, procure aprender Dependency Injection.
Olha,
Eu também estou estudando e "migrando" para o PHP OO, mas, na minha visão acho que o ideal seria pegar todos os conceitos e princípios primeiro, para dpeois começar a fazer os novos projetos usando OOP... Já estou estuando há alguns meses, mas ainda não comecei a por tudo em produção...
Falando do seu código, eu colocaria tudo em inglês para padronizar...
Também tiraria o extends (herança) daí, porque sua classe Conexão não é um PDO, na verdade ela precisa de um PDO. Ficaria assim:
class Conexao {
Eu também não usaria isto:public static function fazInstancia(){
Porque não é recomendável usar o padrão Singleton com banco de dados. Veja:
http://forum.imasters.com.br/topic/400014-resolvidopdo-singleton/?p=1565817
http://forum.imasters.com.br/topic/515652-singleton-com-pdo/
O primeiro link vai te ajudar a substituir o Singleton por Registry, que é parecido mas mais adequado por permitir que você trabalhe com mais de um banco de dados no seu projeto...
Não entendi sua dúvida, se você quiser uma classe para persistir os dados no banco, poderia ser algo assim (ficticio só para exemplificar)
class NewsStorage
{
class News {