Você está na página 1de 5

PDO Connection Factory na prtica - Parte 1

Autor/fonte: Eduardo Moreira de Lima E-mail/Url: lima.eduardo[arroba]hotmail.com Tags: [ pdo ] [ Indicar a um amigo ] [ Translate to english ] [ Imprimir ]

A biblioteca PDO est disponvel a partir da verso 5 do PHP e nos permite ter um controle mais facilitado aos acessos dos dados. Muito flexvel, permitindo gerenciar vrios tipos de banco de dados, alterando apenas uma linha de cdigo. Como a inteno no trazer tantos conceitos, vamos ao que interessa. Primeiro vou criar a classe PDO (arquivo PDOConnectionFactory.class.php):
<?php class PDOConnectionFactory{ public $con = null; public $dbType = "mysql";//como disse acima, nesta linha podemos escolher o tipo de BD. public $host = "localhost"; public $user = "root"; public $senha = "123456"; public $db = "e_daily"; public $persistent = false; public function PDOConnectionFactory( $persistent=false ){ if( $persistent != false){ $this->persistent = true; } } public function getConnection(){ try{ $this->con = new PDO($this->dbType.":host=".$this>host.";dbname=".$this->db, $this->user, $this->senha, array( PDO::ATTR_PERSISTENT => $this>persistent ) ); return $this->con; }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); } } public function Close(){ if( $this->con != null ) $this->con = null; } } ?>

Criada a classe PDO, vamos criar uma classe que centralize os mtodos GET's e SET's, mtodos para ler e setar os atributos de uma classe, respectivamente. Arquivo Login.class.php):
<?php class Login { private $cod_login; private $usuario; private $senha; function Login() { } ############## CONJUNTO DE SET'S public function setCod_login($cod_login) { $this->cod_login = $cod_login; } public function setUsuario($usuario) { $this->usuario = $usuario; } public function setSenha($senha) { $this->senha = $senha; } ############## CONJUNTO DE GET'S public function getCod_login() { return $this->cod_login; } public function getUsuario() { return $this->usuario; } public function getSenha() { return $this->senha; } } ?>

No prxima parte desse tutorial vamos aprender a instanciar os objetos para serem guardados no banco de dados, usando claro a PDO!

PDO Connection Factory na prtica Parte 2


Na primeira parte desse tutorial vimos como criar um arquivo que conecte ao banco de dados e vimos tambm um exemplo de classe que concentre os mtodos GET e SET. Veremos agora como instanciar os objetos, para que posteriormente sejam "guardados" no banco.

Vamos l:
<?php //Primeiro vamos receber os dados oriundos do formulrio $usuario=$_POST['login']; $senha=$_POST['senha']; /*Mesmo usando JavaScript para validao sempre bom faz-la tambm como o PHP, j que nunca saberemos se o navegadar do usurio est com JavaScript ativo. */ $erro=0; if(empty($usuario)){ $erro=1; $msg= "<p>Preencha o campo Usurio!</p>"; } if(empty($senha)){ $erro=1; $msg= "<p>Preencha o campo Senha!</p>"; } //Se ocorreu erro, exibe a mensagem de erro if($erro){ echo "{$msg}"; echo "<p align=center><a href='javascript:history.back()'>Voltar</a></p>"; } //Caso no ocorra nenhuma das excees acima: else{ require_once "Login.class.php"; /*Esse arquivo criamos na primeira parte do tutorial*/ require_once "LoginDAO.class.php"; /*Ainda no aprendemos a criar o arquivo LoginDAO.class.php. Na prxima parte desse tutorial aprenderemos a faz-la.*/ /*Primeiro criamos um objeto atravs do new*/ $login = new Login(); /*Posteriormente populamos este objeto "setando" os seus valores. Aqui j podemos ver a utilidade da classe Login.class.php, que criamos na parte 1 desse tutorial.*/ $login->setUsuario($usuario); $login->setSenha($senha); /*Criamos um outro objeto.*/ $dao = new LoginDAO(); /*Aqui chamamos o mtodo cadastrar, que ainda no o criamos, faremos na prxima parte do tutorial. Passamos para o mtodo cadastrar o objeto login, que criamos acima. Esse objeto estar populado com os dados oriundos do formulrio, que o resgatamos atravs do mtodo POST.*/ $dao->cadastrar($login); }//fim do else ?>

Na terceira parte do tutorial criaremos o arquivo LoginDAO.class.php onde concentraremos os mtodos de manipulao de dados.

PDO Connection Factory na prtica Parte 3


Na primeira parte do tutorial criamos a classe PDOConnectionFactory que faz a conexo com o banco de dados. Criamos tambm a classe Login que concentra os mtodos setters e getters, para escrita e leitura, respectivamente. Na segunda parte criamos o objeto Login que fora populado com dados vindos do formulrio. Instanciamos o objeto LoginDAO e chamamos o mtodo cadastrar, passando como referncia o objeto Login. Nessa parte do tutorial vamos criar a classe LoginDAO para que essa faa as manipulaes dos dados no banco de dados. Arquivo LoginDAO.class.php:
<?php /*Inclumos as classes criadas na parte 1 do tutorial.*/ require_once ("PDOConnectionFactory.class.php"); require_once ("Login.class.php"); /*Damos o nome a classe que ir concentrar os mtodos de acesso aos dados, como: cadastrar, editar, excluir...*/ /*E fazemos com que essa herde os atributos e os mtodos da classe de conexo com o BD.*/ class LoginDAO extends PDOConnectionFactory { public $conex = null; /*No construtor chamamos o mtodo getConnection da classe PDOConnectionFactory.*/ /*Esse responsvel por fazer a conexo com o banco de dados*/ public function LoginDAO() { $this->conex = PDOConnectionFactory :: getConnection(); } /*Enfim, vamos fazer a insero dos dados no BD.*/ /*Quando instanciamos o objeto LoginDAO chamamos o mtodo cadastrar, e passamos por ele o objeto Login.*/ /*Aqui, a funo cadastrar deve ser pblica j que vai ser acessada fora da classe atual.*/ /*Ela recebe como parmetro o objeto Login.*/ public function cadastrar($login) { try { /*Iniciamos uma transao do BD.*/ $this->conex->beginTransaction(); /*Preparamos a insero.*/ $query = $this->conex->prepare("INSERT INTO login (id, usuario, senha) VALUES (null, :usuario, :senha)"); /*Criamos um array para que este possa ler os valores vindos do objeto Login.*/ $valores = array(usuario => $login>getUsuario(),

senha => $login>getSenha()); /*Executamos a insero.*/ $query->execute($valores); $this->conex->commit(); echo "Cadastro realizado com sucesso!"; $this->conex = null; /*Se houver algum erro na tentativo do try ele reportado aqui.*/ } catch (PDOException $ex) { echo "Erro: " . $ex->getMessage(); } } } ?>

Na quarta parte do tutorial veremos outros exemplos de mtodos de manipulao dos dados no banco de dados.