pdo connection factory na prática

6
PDO Connection Factory na prática - 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á disponível a partir da versão 5 do PHP e nos permite ter um controle mais facilitado aos acessos dos dados. Muito flexível, permitindo gerenciar vários tipos de banco de dados, alterando apenas uma linha de código. Como a intenção não é 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; } }

Upload: aureliano-duarte

Post on 27-Oct-2015

39 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: PDO Connection Factory na prática

PDO Connection Factory na prática - Parte 1

Autor/fonte: Eduardo Moreira de LimaE-mail/Url: lima.eduardo[arroba]hotmail.comTags: [ pdo ]

[ Indicar a um amigo ] [ Translate to english ] [ Imprimir ]

A biblioteca PDO está disponível a partir da versão 5 do PHP e nos permite ter um controle mais facilitado aos acessos dos dados. Muito flexível, permitindo gerenciar vários tipos de banco de dados, alterando apenas uma linha de código.

Como a intenção não é trazer tantos conceitos, vamos ao que interessa.

Primeiro vou criar a classe PDO (arquivo PDOConnectionFactory.class.php):

<?phpclass 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; }}?>

Page 2: PDO Connection Factory na prática

Criada a classe PDO, vamos criar uma classe que centralize os métodos GET's e SET's, métodos para ler e setar os atributos de uma classe, respectivamente.

Arquivo Login.class.php):

<?phpclass 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 próxima parte desse tutorial vamos aprender a instanciar os objetos para serem guardados no banco de dados, usando é claro a PDO!

PDO Connection Factory na prática - Parte 2Na primeira parte desse tutorial  vimos como criar um arquivo que conecte ao banco de dados e vimos também um exemplo de classe que concentre os métodos GET e SET.

Veremos agora como instanciar os objetos, para que posteriormente sejam "guardados" no banco.

Page 3: PDO Connection Factory na prática

Vamos lá:

<?php //Primeiro vamos receber os dados oriundos do formulário$usuario=$_POST['login'];$senha=$_POST['senha'];

/*Mesmo usando JavaScript para validação é sempre bom fazê-la também como o PHP, já que nunca saberemos se o navegadar do usuário está com JavaScript ativo. */$erro=0;if(empty($usuario)){ $erro=1; $msg= "<p>Preencha o campo Usuário!</p>";}if(empty($senha)){ $erro=1; $msg= "<p>Preencha o campo Senha!</p>";}//Se ocorreu erro, exibe a mensagem de erroif($erro){ echo "{$msg}"; echo "<p align=center><a href='javascript:history.back()'>Voltar</a></p>";}//Caso não ocorra nenhuma das exceções acima:else{ require_once "Login.class.php"; /*Esse arquivo criamos na primeira parte do tutorial*/ require_once "LoginDAO.class.php"; /*Ainda não aprendemos a criar o arquivo LoginDAO.class.php. Na próxima parte desse tutorial aprenderemos a fazê-la.*/

/*Primeiro criamos um objeto através 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 método cadastrar, que ainda não o criamos, faremos na próxima parte do tutorial. Passamos para o método cadastrar o objeto login, que criamos acima. Esse objeto estará populado com os dados oriundos do formulário, que o resgatamos através do método POST.*/ $dao->cadastrar($login);}//fim do else?>

Na terceira parte do tutorial criaremos o arquivo LoginDAO.class.php onde concentraremos os métodos de manipulação de dados.

Page 4: PDO Connection Factory na prática

PDO Connection Factory na prática - Parte 3

Na primeira parte do tutorial  criamos a classe PDOConnectionFactory que faz a conexão com o banco de dados. Criamos também a classe Login que concentra os métodos setters e getters, para escrita e leitura, respectivamente.

Na segunda parte  criamos o objeto Login que fora populado com dados vindos do formulário. Instanciamos o objeto LoginDAO e chamamos o método cadastrar, passando como referência o objeto Login.

Nessa parte do tutorial vamos criar a classe LoginDAO para que essa faça as manipulações dos dados no banco de dados.

Arquivo LoginDAO.class.php:

<?php/*Incluímos 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 métodos de acesso aos dados, como: cadastrar, editar, excluir...*//*E fazemos com que essa herde os atributos e os métodos da classe de conexão com o BD.*/class LoginDAO extends PDOConnectionFactory { public $conex = null;

/*No construtor chamamos o método getConnection da classe PDOConnectionFactory.*/ /*Esse responsável por fazer a conexão com o banco de dados*/ public function LoginDAO() { $this->conex = PDOConnectionFactory :: getConnection(); }

/*Enfim, vamos fazer a inserção dos dados no BD.*/ /*Quando instanciamos o objeto LoginDAO chamamos o método cadastrar, e passamos por ele o objeto Login.*/ /*Aqui, a função cadastrar deve ser pública já que vai ser acessada fora da classe atual.*/ /*Ela recebe como parâmetro o objeto Login.*/ public function cadastrar($login) { try { /*Iniciamos uma transação do BD.*/ $this->conex->beginTransaction(); /*Preparamos a inserção.*/ $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(),

Page 5: PDO Connection Factory na prática

senha => $login->getSenha()); /*Executamos a inserção.*/ $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 métodos de manipulação dos dados no banco de dados.