Preciso de Ajuda com Orientação a Objeto - PHP
Alguém poderia me dizer qual a forma mais correta de se utilizar uma classe seguindo as regras e padrões da Orientação a Objeto. Digamos que eu tenha uma classe Abstrata que fará a conexão com o banco de dados, eu crio uma outra classe que herda dessa classe abstrata, o correto seria utilizar os atributos da classe usando Exemplo 1 ou Exemplo 2?
OBS: se eu usar o Exemplo 1 (que utiliza o parent) ou Exemplo 2 (que utilza o $this) o resultado dos dois é o mesmo como no print abaixo mostra.
P.S.: Estou pergutando para não acabar fazendo gambiarra.
Codígo Exemplo 1:
<?php
require_once 'db.abstract_class.php';
final class DB extends AbstractDB
{
public function __construct(String $dbtype, String $host, Int $port, String $dbname, String $charset, String $user, String $pass){
return parent::__construct($dbtype, $host, $port, $dbname, $charset, $user, $pass);
}
final function Connect(){
$dbtype = parent::getDBType();
$host = parent::getHost();
$port = parent::getPort();
$dbname = parent::getDBName();
$charset = parent::getCharset();
$dbh = new PDO($dbtype . ":host={$host};port={$port}dbname={$dbname};charset{$charset}", parent::getUser(), parent::getPass());
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, TRUE);
$dbh->setAttribute(PDO::ATTR_PERSISTENT, TRUE);
parent::setConnection($dbh);
return parent::getConnection();
}
final function Disconnect(){}
final function selectDB(){}
final function insertDB(){}
final function updateDB(){}
final function deleteDB(){}
}
?>
**Codígo Exemplo 2:**
<?php
require_once 'db.abstract_class.php';
final class DB extends AbstractDB
{
public function __construct(String $dbtype, String $host, Int $port, String $dbname, String $charset, String $user, String $pass){
$this->setDBType($dbtype);
$this->setHost($host);
$this->setPort($port);
$this->setDBName($dbname);
$this->setCharset($charset);
$this->setUser($user);
$this->setPass($pass);
}
final function Connect(){
$dbtype = $this->getDBType();
$host = $this->getHost();
$port = $this->getPort();
$dbname = $this->getDBName();
$charset = $this->getCharset();
$dbh = new PDO($dbtype . ":host={$host};port={$port}dbname={$dbname};charset{$charset}", $this->getUser(), $this->getPass());
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, TRUE);
$dbh->setAttribute(PDO::ATTR_PERSISTENT, TRUE);
$this->setConnection($dbh);
return $this->getConnection();
}
final function Disconnect(){}
final function selectDB(){}
final function insertDB(){}
final function updateDB(){}
final function deleteDB(){}
}
?>
**Resultado:**
[/applications/core/interface/imageproxy/imageproxy.php?img=https://i.stack.imgur.com/98tFU.png&key=57a87cfe3cc026f3fcdbdf8776100c1860c23fa74c21823ffe9a957f1a644318" style="border:0px;font-size:15px;padding:0px;vertical-align:baseline;" />](https://i.stack.imgur.com/98tFU.png)Discussão (1)
Carregando comentários...