Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, tava pesquisando na internet como fazer algumas conexões em Banco de Dados no PHP Orientado a Objeto e me deparei com esse script desse site http://www.linhadecodigo.com.br/artigo/3461/pdo-em-php-orientado-a-objetos.aspx.
Reparei que a Conexao é uma classe abstrata e nunca usei nada do tipo no PHP, pois to começando a estudar isso agora... Gostaria de saber como poderia utilizar esse script ?
Imaginem que esse arquivo chama conexao.class.php e tenho outro arquivo chamado index.php onde vou realizar todas minhas operações no BD...
Existem dois tipos de abstração relacionadas a banco de dados:
1- Abstração de linguagem, ou seja, o desenvolvedor acredita que nunca vai utilizar outros bancos a não ser os relacionais baseado em SQL e acaba fazendo abstração da linguagem SQL para implementá-la da forma como cada banco precisar.
2 - Abstração de banco de dados, este é para que a aplicação trabalhe com qualquer tipo de banco e a qualquer momento poderá mudar de relacional para MongoDB, de MongoDB para qualquer outro, o interessante é que a aplicação não vai e nem pode perceber esta mudança, pois trabalha independente.
Um classe abstrata de conexão é muito importante, ela vai permitir que dados que não precisariam ser reescritos sejam armazenados.
/**
* @package imasters_db
*/
namespace imasters\db;
abstract class AbstractConnect
{
private $host = "localhost";
/**
* Não vou escrever tudo, isto é apenas um exemplo
*/
protected function getHost()
{
return $this->host;
}
public function setHost($string_host)
{
$this->host = $string_host;
}
/**
* Deixa para ser implementada pela classe concreta para cada banco de dados
*/
abstract public function connect();
}/**
* @package imasters_db
*/
namespace imasters\db\driver\mysql;
use imasters\db\AbstractConnect;
class MySqlConnect extends AbstractConnect
{
/**
* Não vou escrever tudo, isto é apenas um exemplo
*/
public function connect()
{
$host = $this->getHost();
}
}
MongoDB
/**
* @package imasters_db
*/
namespace imasters\db\driver\mongodb;
use imasters\db\AbstractConnect;
class MongoDBConnect extends AbstractConnect
{
/*
* [...]
*/
}
Cassandra
/**
* @package imasters_db
*/
namespace imasters\db\driver\cassandra;
use imasters\db\AbstractConnect;
class CassandraConnect extends AbstractConnect
{
/*
* [...]
*/
}
Uma classe abstrata não pode ser instanciada. Você precisa criar uma classe que estenda essa classe abstrata para, depois, instanciá-la.
Mais detalhes aqui: http://php.net/manual/pt_BR/language.oop5.abstract.php
Particularmente, eu não definiria essa classe como abstrata. Só vejo motivo para isso, se o construtor, que faz a conexão, precisasse ser especializado para cada SGBD.