Curso de PHP Orientado a Objetos – Parte 12

Slide1Décimo segundo artigo do curso de PHP Orientado a Objetos. Dessa vez, estudaremos o PDO (PHP Data Object).
Vamos iniciar o décimo segundo e último artigo do curso de PHP Orientado a Objetos.
Para conhecer as demais partes, clique aqui.
Ao final deste artigo, você será capaz de:
Conhecer e utilizar um módulo OO (PDO) para acesso a Banco de Dados.

Conhecendo o PDO

PDO (PHP Data Objects). Trata-se de um módulo PHP construído sob o paradigma Orientado a Objetos que fornece uma padronização da forma com que o PHP se comunica com o banco de dados relacional. PDO, portanto, é uma interface que define um conjunto de classes e a assinatura de métodos de comunicação com uma base de dados.

Muitos confundem PDO com uma biblioteca de abstração de acesso à base de dados, o que não é verdade, visto que ela não faz a leitura e tradução das instruções SQL, adaptando-as aos mais diversos drivers de banco de dados existentes. Cada SGBD relacional possui uma sintaxe própria para construção de SQL. Embora muitos deles se aproximem da especificação da SQL-92, algumas diferenças existem. Dito isso, podemos concluir que utilizar o PDO não significa que seu sistema será portável entre diferentes SGBD’s. Ela simplesmente unifica a chamada de métodos, delegando-os para as suas extensões correspondentes e faz uso do que há de mais recente no que diz respeito à orientação a objetos presente no PHP5.

Utilizando o PDO

Para utilizar o PDO, primeiro é instanciado um objeto da classe PDO, que representa a conexão com o banco. No construtor da classe, passamos os parâmetros necessários. Cada driver PDO especifica uma forma de como é montado o chamado “DNS”, que é uma string de conexão para o SGBD correspondente. Além do DNS, também é informado, por parâmetro, o usuário, a senha de acesso e algumas opções adicionais.

Para exemplo vamos criar alguns exemplos de DNS para o Mysql, PostgreSQL, SQLite e Firebird:

Agora vamos ao exemplo completo utilizando o MySql e PDO

Para os exemplos descritos a seguir, criaremos uma tabela chamada alunos:

Com a tabela criada, e os 4 registros inseridos, vamos criar a conexão e realizar uma seleção:

Resultado:

Nome: Leandro
Idade: 27

Nome: João
Idade: 24

Nome: Flavia
Idade: 19

Nome: Maria
Idade: 27

Prepared Statements

Está é uma funcionalidade interessante que ameniza muitos erros. Com o uso dos prepared statements não há necessidade de concatenar várias variáveis e usar escape de aspas para prover segurança, uma vez que este método é considerado um dos mais seguros se tratando de segurança contra SQL injection.

Se segurança não é um motivo que te convence, utilizando Prepared Statements temos uma melhora significativa em temos de performance na execução das query’s.

Para utilizar esta funcionalidade, basta colocarmos os valores no array que será passado por parâmetro para o método execute.
Vamos ao exemplo:

Resultado:

Nome: João
Idade: 24

De acordo com o que foi comentado anteriormente, o uso de Prepared Statements deixa nossa consulta muito mais rápida, visto que a mesma fica previamente “compilada” e pronta para execução com os novos valores. Ao invés do SGBD interpretar toda a SQL, ele apenas atribui novos valores aos pontos chave e realiza a operação.

Existem outras formas para o uso de Prepared Statements, vamos conhecer mais uma:

Resultado:

Nome: Flavia
Idade: 19

PDO fetch()

É possível retornar dados de uma consulta de diversas formas, uma delas é fazendo uso da função fetch(). Ela aceita diversos parâmetros:

  • PDO::FETCH_ASSOC – Retorna um array indexado pelo nome da coluna;
  • PDO::FETCH_NUM – Retorna um array indexado pela posição numérica da coluna;
  • PDO::FETCH_BOTH – Retorna um array indexado pelo nome e pela posição numérica da coluna;
  • PDO::FETCH_OBJ – Retorna um objeto anônimo (stdClass) onde cada coluna é acessada como se fosse uma propriedade.

Vamos ao exemplo:

Conclusão:

Não vamos abordar aqui todas as funcionalidades do PDO. Lembre-se que a biblioteca PDO é: Segura, rápida, consistente e prática.  Você deve fazer uso e se aperfeiçoar. Para maiores informações clique aqui.

Chegamos ao final do nosso curso. Foram 12 artigos abordando tudo aquilo que julgo necessário para começar no mundo OO. Tentei dar ênfase nos pontos que geram maior dúvida. Agora, cabe a você fazer uso do que aprendeu, não desanime, no início, deixar o paradigma estruturado pode ser difícil, mas no futuro você perceberá que valeu a pena. Não é em um mês que você se tornará um expert. Novidades aparecerão, então continue estudando com afinco e pratique bastante.

Recomendo que você aprenda um bom Framework. Isso vai te fornecer versatilidade, além de ser uma exigência do mercado. Basicamente a idéia por trás de um framework está ligada ao modelo MVC (Model View Controller). De forma geral, o que ele faz é isolar a programação, lógica de negócio e a camada de exibição.

Pretendo escrever algo sobre frameworks em breve. Por isso, visite o site para se manter informado.

Não se esqueça de comentar a respeito do curso. Isso é muito importante.

Abraços.

By | 16 de abril de 2012 | | 60 Comments

60 Responses to Curso de PHP Orientado a Objetos – Parte 12

  1. Fabiano disse:

    Gostei muito!
    só acho q a próximo tópico póderia ser o dev de uma pequena aplicacão como por exemplo um mini blog ou site! Só para nós termos uma idéia dos conceitos básicos de que um sistema como um blog necessita pra ser funcional segundo o paradigma da OO!

  2. Hugo disse:

    Concordo com o fabiano! =D
    Excelente curso a propósito, agora se tem um material de qualidade na internet sobre esse assunto! Vlws!

  3. Julio Alves disse:

    Pow, parabéns pelas sequência de postagens, são muito boas!
    Parabéns mesmo! ^^ ;DD

  4. Michael Colla disse:

    Simplesmente show de bola o curso! Acompanhei todos os 12 artigos, e agora é praticar pra melhorar o máximo possível. No aguardo do curso de JQuery! Muito obrigado!

  5. Cézar Milhorini disse:

    Parabéns! As informações foram muito úteis, dando uma visão macro da oo..Abrç

  6. Flavio disse:

    Parabéns, ótimas abordagens de OOP

  7. Marcelo disse:

    Posso fazer uma conexão PDO a um banco dedos Oracle? Como seria?

    Artigos excelentes! Parabéns!

  8. Waister Nunes disse:

    Muito bom cara!
    Parabéns e obrigado pela colaboração!!
    Abs!

  9. Zé Paraná disse:

    Li os 12 artigos.
    Muito bom, obrigado.

  10. Marcos Xavier disse:

    Simplesmente incrivel, muito bem explicado é sem dúvida um material que agradará a todos que querem aprender de verdade.
    Parabéns.

  11. Rodrigo disse:

    Muito boa a sua didatica, e o curso acrescentou muito no meu aprendizado de OO
    Muito obrigado mesmo!

  12. Quero agradecer pelo tutorial divulgado.

    Só uma pergunta: qual Framework que indicaria ?

    • Leandro disse:

      Olá Anderon. Muito obrigado pelo comentário.
      Framework sempre gera discussão por se tratar mais de uma opção de caráter pessoal. Particularmente, considero o CodeIginiter um dos melhores frameworks do mercado. Principalmente pelo vasto material disponível na web.
      Abraços.

  13. Adriano disse:

    Fala Leandro blz!

    Quando terá novas aulas oop e iniciara o curso jquery ?

    As aulas estão ótimas, parabéns pelo bom trabalho!

    • Leandro disse:

      Olá Adriano. Obrigado pelo comentário. Estou um pouco sem tempo para publicar novas aulas, já tenho algumas prontas mas precisa passar por uma revisão. Em breve termos novidades.

  14. Darnos disse:

    muito bom Leandro, esse curso está entre os melhores que encontrei até agora, vai me ajudar muito no meu tcc, obrigado e parabéns pela iniciativa!

    Eu voto pelo Jquery no próximo curso

  15. Cézar Santi disse:

    Muito bom o curso. Parabéns pela dedicação e pelo trabalho.

  16. Arnaldo disse:

    Obrigado, salvou a pátria, excelente resumo, de consulta rápida, compreensivo e abrangente.
    Pelo pouco tamanho, é um dos melhores materiais que estudei de PHP nestes 10 anos.

  17. Parábens! pela brilhante iniciativa.
    Estou iniciando com o PHP e pretendo seguir adiante.
    E são atitudes como estas que ajudam as pessoas.
    Muito obrigado.

  18. Marcelo Augusto disse:

    Otimo curso Leandro, aprendi muita coisa aqui,
    Tu podia escrever sobre a biblioteca cURL, ja li varioas artigos por ai, mais não vão muito a fundo,

    vlw cara muito obrigado

  19. José Barbosa disse:

    Esse post sobre PDO é um dos melhores que tem na comunidade parabéns e continue com o trabalho de sucesso!

  20. Davyson Costa disse:

    Muito bom e rápido o curso!

    Sugestão:
    Fazer um curso de PHP5 com MVC. Você poderia propor uma pequena aplicação que abordasse esses conceitos.

    Abraço

  21. Michel de Castro disse:

    Foi um Curso excelente ! Muito bom mesmo !
    Também estou começando no PHP e as informações
    contidas nesse curso estão muito claras.
    Obrigado por nos dar essa oportunidade de
    aprendizado. Valew

  22. Leandro, parabéns pelo curso! Sua didática é muito boa, muito simples de entender OO.
    Mesmo já tendo conhecimento, li todos os posts consegui tirar de vez algumas dúvidas, relembrar conceitos e práticas. Muito bom!

    Minha sugestão é fazer um breve curso ensinando sobre MVC e um framework, como o Codeigniter, como você mesmo sugeriu nos comentários acima.

    Em relação a templates PHP, você tem alguma sugestão? Já li sobre o Smarty, mas vi várias pessoas dizendo que no final das contas uma aplicação desenvolvida com smarty acaba não separando o HTML do PHP. O que me sugere?

    Abs.

  23. Jéssica disse:

    Parabéns! sensacional :)

  24. Jéssica disse:

    Posso dizer que estes artigos foram meu presente de Natal! rsrsrsr

  25. cleiber disse:

    Ótimo curso, muito bem estruturado e explicado, para um melhor entendimento do paradigma orientado a objetos. Parabéns.

  26. Paulo Sérgio disse:

    Leandro, ao estudar PDO, percebi que muitos autores utilizam os metodos “bindValue()” e “bindParam”, qual seria a utilidade de usar os mesmos?

  27. Ronaldo disse:

    Leandro, suas aulas são excelentes… porém não estão finalizados. Tens alguma previsão para continuar a publicar novos artigos ? Ou fecha o curso por aqui mesmo !? Vlw pelas aulas anteriores, muito boas !

  28. Ótimo curso!!!! Parabéns!!!!

  29. Jéssica disse:

    Parabéns Leandro! excelente conteúdo.
    Todos nós somos privilegiados por ter um conteúdo de Excelência.
    Parabéns, espero mais aulas principalmente de PDO.. :)

  30. AniCash disse:

    meu caro olha estou muito agradecido pelo material que forneceste no teu blog e achei muito mais do que a palavra fixe, realmente tens o dom da palavra, continua assim que vais longe

  31. noslineda disse:

    finalmente encontrei um site que tem tudo explicado de uma forma clara, muito bom mesmo
    obrigado por compartilhar seus conhecimentos .

  32. Lory disse:

    Olá , quero agradecer pela disponibilidade de vc ter reservado um tempo para, compartilhar seu conhecimento de uma forma didatica, pois finalmente encontrei um site na net para ter como referencia , aprendi muito com vc.
    Sucesso ao site!

  33. Igor disse:

    Parabéns pela nobre iniciativa e pela simples e clara forma de apresentar o conteúdo.
    Foi, com toda certeza, um estudo que me acrescentou muito conhecimento e me ajudou a solidificar certos assuntos.

  34. Tom disse:

    Parabéns Leandro,

    Foi o melhor material sobre oo que encontrei na net, esta ajudando muitas pessoas, simplificando as coisas bem mais fácil que estudar o manual do php, espero que consiga um bom patrocínio p/ que possa ter mais tempo e continuar nos ajudando.

  35. Hendrew disse:

    Muito obrigado por tudo cara! Aprendi bastante com seus artigos! Em relação ao Framework, seria interessante você nos ensinar a usar o Kohana que foi originalmente criado como um fork do framework PHP CodeIgniter. Abraços!

  36. Júlio disse:

    Chegamos ao fim.

    Excelente material. Aprendi muito, e me deixou mais encantado com o php.

    Aguardamos os próximos… vamos lá amigão, sua legião de fãs está ansiosa.

    Sucesso!!!

  37. Gostei bastante da série de posts. Usei para estudar alguns aspectos de POO em PHP que estavam enferrujados. Estou recomendando para quem me pergunta por onde começar, parabéns.

  38. Olá, Leandro. Você escreveu isto em abril de 2012 e hoje, em maio de 2014, suas aulas e metodologias continuam salvando vidas. rs.
    Gostei muito do curso, fiz as 12 aulas e pratiquei seus exemplos.
    Quero agradecer pelo empenho e pelo modo como fez simples, conceitos que meus professores tornaram tão complexos e monstruosos. Hoje penso que se eu tivesse tido acesso ao seu material, seria uma programadora melhor em OO. Mas enfim, agora é bola pra frente.

    Obrigada mesmo e desejo tudo de bom para você.

  39. Rimario disse:

    Que tal criarmos um site (colaborativo), tipo alguém que curta CSS fica encarregado do CSS, quem curte Banco de Dados, cuidar do banco de dados… do PHP, cuidar do PHP….

    Poderíamos através deste, checar as prioridades/interesses de aprendizado e com base nisso poderíamos criar o site.

    Postei hoje cedo (via contato), meu interesse em aprender a criar Galerias com PHP Orientado a Objetos. Vi em alguns videos no Youtube, que usam a jQuery e outros plugins… minha ideia é ter um option (combobox) onde eu possa escolher o plugin e aplicar o efeito na galeria de fotos….

    Uma das minhas dúvidas é em adaptar as aulas das galerias (mostrado em sua maioria em PHP Estruturado) para PHP Orientado a Objetos.

    Escolher o plugin e adaptar o CSS…
    Deixando sempre bonito no site.

  40. David disse:

    Olá,

    Gostei muito do seu curso, já havia visto outros com vídeo-aulas, mas não consegui assimilar o tanto que assimilei com o seu, apesar de por só leitura e exemplos, a linguagem usada é bem dinâmica e de fácil compreensão até para os menos experientes em programação PHP. Parabéns e continue assim, sempre contribuindo com excelentes cursos.

  41. melquisedeque disse:

    prepare($query);

    $stmt->bindValue (“:id”, $_GET['id'] ,PDO::PARAM_INT); #ERRO NESSA LINHA————–

    $stmt->execute();

    print_r($stmt->fetch(PDO::FETCH_ASSOC));

    }
    catch(\PDOException $x){

    echo”noa foi possivel conectar ao banco de dados”.$x->getCode();

    }

    ?>

Deixe uma resposta para Paulo Sérgio Cancelar resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *