Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // Arquivo: Utils/Database.php
- // Classe que faz a conexão com o banco de dados e realiza ações básicas
- // no banco -- independente da entidade que será utilizada.
- class Database {
- private $host = "localhost";
- private $user = "my_username";
- private $password = "my_Str0ng_P4ssw0rdd!";
- private $db = "database_scheme_name";
- private $connection;
- public function __construct()
- {
- $this->connection = mysql_connect($this->host, $this->user, $this->password);
- }
- public function executeQuery($sqlQuery) {
- // executa uma query
- }
- // ...
- }
- // Arquivo: DAO/BankAccountDAO.php
- // Classe que realiza os passos necessários para salvar uma determinada entidade
- // no banco de dados (faz uso da classe Database, assim ela não precisa saber detalhes
- // do banco, como por exemplo: host, user, password, scheme).
- class BankAccountDAO {
- private $database;
- public function __construct($database)
- {
- $this->database = $database;
- }
- public function get($id) {
- // busca conta com id especificado
- $bankAccount = $this->database->execute("query que busca a conta bancária");
- return $bankAccount;
- }
- public function save($bankAccount) {
- // Salva a conta no banco de dados
- if ($bankAccount->id == 0) {
- // Salva uma nova entidade no banco e atualiza o id do objeto passado
- $this->saveObject($bankAccount);
- } else {
- $this->updateObject($bankAccount);
- }
- }
- private function saveObject($bankAccount) {
- // Salva a conta no banco e define o $id do objeto $bankAccount como sendo
- // o id da entidade gerada no banco de dados.
- }
- private function updateObject($bankAccount) {
- // Atualiza um objeto do banco de dados usando o $bankAccount->id como identificador.
- // (Where id = $bankAccount->id)
- }
- // Faz outras operações que a entidade BankAccount precisa no banco de dados.
- }
- // Arquivo: Models/BankAccount.php
- // Classe que guarda os valores da entidade e aplica as regras de negócios que se aplicam
- // a esta entidade.
- class BankAccount {
- private $id;
- private $saldo;
- public function __construct($saldo) {
- $this->saldo = $saldo;
- $this->id = 0;
- }
- public function getId() {
- return $this->id;
- }
- public function setId($id) {
- $this->id = $id;
- }
- public function getSaldo() {
- return $this->saldo;
- }
- public function setSaldo($saldo) {
- $this->saldo = $saldo;
- }
- public function depositar($valor) {
- // Você nunca pode depositar um valor negativo ou zero.
- if ($valor <= 0) {
- throw new Exception("Você não pode depositar valores negativos ou zero unidades monetárias.");
- }
- $this->$saldo += $valor;
- }
- public function sacar($valor) {
- // Você nunca pode sacar um valor negativo ou zero.
- if ($valor <= 0) {
- throw new Exception("Você não pode sacar valores negativos ou zero unidades monetárias.");
- }
- $this->$saldo -= $valor;
- }
- }
- // Usando tudo junto.
- // 1) Montando a estrutura para conectar no banco e salvar uma conta bancária:
- $db = new Database();
- $bankAccountDAO = new BankAccountDAO($db);
- // 2) Criando uma nova conta bancária
- $novaConta = new BankAccount(1500);
- // 3) Salvando a conta bancária
- $bankAccountDAO->save($novaConta);
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement