Recursos avançados e Orientação a Objetos no PHP



Documentos relacionados
A Certificação ZCE 5.3

UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs?

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Desenvolvimento de Aplicações para Internet Aula 9

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

Desenvolvimento de Aplicações para Internet Aula 8

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Programação Orientada a Objetos JDBC Java Database Connectivity

Programação Web com PHP. Prof. Wylliams Barbosa Santos Optativa IV Projetos de Sistemas Web

PHP INTEGRAÇÃO COM MYSQL PARTE 2

Sumário. Capítulo 1 O que é o PHP? Capítulo 2 Instalação do PHP Capítulo 3 Noções básicas de programação... 25

BANCO DE DADOS WEB. Professor Luciano Roberto Rocha

Integrando Java com Banco de Dados

C# - Conexão com MySQL

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Conceitos de OO AUTOLOAD. <?php function autoload($class_name) { require_once $class_name. '.php'; } $obj = new MyClass1(); $obj2 = new MyClass2();?

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

MANUAL DE NORMAS PARA DESENVOLVIMENTO DE CÓDIGO DA FÁBRICA VIRTUAL DE SOFTWARE DA FIPP. Curso Superior de Tecnologia em Sistemas para Internet 2/2014

sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p:// h7p://leveme.

Programação com Acesso a Banco de Dados

JDBC Java Database Connectivity

Persistência de Classes em Tabelas de Banco de Dados

Acesso a Bancos de Dados em Java (JDBC)

JDBC. Java DataBase Connectivity

AMBIENTE WEB PARA GERÊNCIA DE PROCESSO DE SOFTWARE BASEADO NO SCRUM

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Aula 1 Acesso a Banco de Dados

Leonardo Gresta Paulino Murta

JDBC Acessando Banco de Dados

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

Desenvolvimento orientado a objetos com PEAR: DB/MDB2, DB_DataObject, HTML_QuickForm e DB_DataObjectFormBuilder

Mapeamento Lógico/Relacional com JPA

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

PHP e MySQL Autenticação de Usuários

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Desenvolvendo Websites com PHP

Prof. Marcelo Machado Cunha

SQL Structured Query Language

Fernando Freitas Costa. Pós-Graduando em Gestão e Docência Universitária. blog.fimes.edu.br/fernando nando@fimes.edu.br

UFG - Instituto de Informática

Como usar o SQLReactor para persistência de objetos PHP num banco de dados

Modelo Cliente/Servidor Por HIARLY ALVES

Banco de Dados. Prof. Leonardo Barreto Campos 1

JPA: Persistência padronizada em Java

Introdução a Banco de Dados

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

Treinamento em PHP. Aula 7. Ari Stopassola Junior

ESTUDO SOBRE AS LINGUAGENS DE PROGRAMAÇÃO HOSPEDEIRAS SUPORTADAS PELA FERRAMENTA HTML. Aluno: Rodrigo Ristow Orientador: Wilson Pedro Carli

Instituto Federal do Sertão-PE. Curso de PHP. Professor: Felipe Correia

Desenvolvimento de Aplicações para Internet Aula 7

Programação web Prof. Wladimir

Transações Seguras em Bancos de Dados (MySQL)

Prova de pré-requisito

Banco de Dados I. Introdução. Fabricio Breve

JDBC. Prof. Márcio Bueno

JSP - ORIENTADO A OBJETOS

22/05/2012 CRIANDO UM PROJETO COM TELAS ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS TAREFAS PHP MYSQL PARTE 2

Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

JavaScript 2.0X X

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

PROGRAMAÇÃO PARA INTERNET. Fonte: Raul Paradeda

Introdução ao PHP. Prof. Késsia Marchi

Tópicos em Engenharia de Computação

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Padrões de Projeto e Persistência com DAO

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Gerador de código JSP baseado em projeto de banco de dados MySQL

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Padrão Arquitetura em Camadas

Programação Orientada a Objetos II

Sumário. Capítulo 1 Revisão de PHP Capítulo 2 Melhorando o processamento de formulários... 46

Anexo I Formulário para Proposta

PHP Profissional. Alexandre Altair de Melo Mauricio G. F. Nascimento

Exercícios de fixação: Listas

MySQL: Inserção e Seleção em Tabelas

Banco de Dados. Maurício Edgar Stivanello

Introdução Conceitos Iniciais Metodologia Web Services Considerações Finais. Introdução. Conceitos Iniciais Metodologia

Drive MySql de conexão para Eclipse

PHP (Seções, Cookies e Banco de Dados)

Programação Orientada a Objetos (DPADF 0063)

Copyright 2008, 2013 da Novatec Editora Ltda.

WebApps em Java com uso de Frameworks

Java na WEB Banco de Dados

Guia de Consulta Rápida. PHP com XML. Juliano Niederauer. Terceira Edição. Novatec

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Java. Marcio de Carvalho Victorino

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

Transcrição:

Recursos avançados e Orientação a Objetos no PHP Edgar Rodrigues Sandi edgar@season.com.br

Gerente de projetos Desenvolvedor PHP e Java Ministra os treinamentos: Linguagens de Programação PHP I Fundamentos ( Oficial Zend ) PHP II Estruturas Superiores ( Oficial Zend ) Academia do Programador ( Oficial Globalcode ) Bancos de Dados (MySQL / PostgreSQL e Oracle) MS Project WebDesign (Suíte Adobe) Instrutor homologado Globalcode

Quem é a Season Treinamentos? A Season Treinamentos é o único centro autorizado a realizar treinamentos oficiais das tecnologias Zend no Brasil. Outras parcerias de treinamentos oficial:

Treinamentos oficiais: PHP I Fundamentos PHP II Estruturas Superiores Próximos treinamentos oficiais: Zend Framework Zend Server Zend Studio Preparatório para as certificações ZCE e ZFC

Treinamentos oficiais em São Paulo: PHP I - Fundamentos Treinamento Oficial Zend Carga Horária 24 horas Próximas Turmas São Paulo/SP 28.02.2011 Seg. à Ter. - Integral PHP II Estruturas Superiores Treinamento Oficial Zend Carga Horária 40 horas Próximas Turmas São Paulo/SP 28.03.2011 Seg. à Sex. - Integral

Próximos minicursos em São Paulo: Segurança no PHP 30.03.2011 Quarta feira 19h Frameworks PHP 27.04.2011 Quarta feira 19h Carga Horária dos minicursos 3 horas A certificação ZCE 25.05.2011 Quarta feira 19h

Quem é Zend Technologies? Zend é uma empresa norte-americana fabricante de software. Seus produtos são orientados para a plataforma PHP com ênfase no gerenciamento e melhoria do desempenho de aplicações web utilizando esta tecnologia.

Diário de bordo Recursos avançados no PHP Exemplos de código Orientação a objetos Exemplos de código PDO Exemplos de código

Uma opção a se utilizar para o IF é conhecida como if inline ou if ternário. Utilizado como substituto do IF comum (IF e ELSE). Em sua sintaxe encontramos os caracteres? e o : echo ($var > 10)? "SIM" : "NÃO"; ou $foo = ($var > 10)? "SIM" : "NÃO";

O comando foreach nos oferece uma maneira mais fácil de navegar por um array. O PHP oferece duas opções de sintaxe: 1. navegando por um array numérico foreach ( $array as $value ) { echo $value; } 2. navegando por um array associativo foreach ( $array as $key => $value ) { echo $key, $value; }

ctype_alnum Faz a validação de caracteres alfanuméricos $valor = "aa12bb6cc"; if(ctype_alnum($valor)){ echo 'passou no teste'; <= } else { echo 'não passou no teste'; }

ctype_alpha Faz a validação de caracteres alfabeticos $valor = "aa12bb6cc"; if(ctype_alpha($valor)){ echo 'passou no teste'; } else { } echo 'não passou no teste'; <=

ctype_digit Faz a validação de caracteres numéricos $valor = "aa12bb6cc"; if(ctype_digit($valor)){ echo 'passou no teste'; } else { } echo 'não passou no teste'; <=

ctype_* Outras validações ctype_cntrl = valida caracteres de controle ctype_graph = valida se há algum caractere imprimível exceto espaço ctype_lower = valida caracteres minúsculo ctype_upper = valida caracteres maiúsculo

O PHP oferece amplo suporte a tratamento de erros. Um deles é o tratamento de Exceções utilizando o try catch. try { <codigo> } catch (Exception $e) { <tratamento> }

No tratamento dos erros o PHP oferece algumas opções para auxiliar o desenvolvedor. Opções de <tratamento> $e->getcode(); $e->getfile(); $e->getline(); $e->getmessage(); $e->getprevious(); $e->gettrace(); $e->gettraceasstring();

Diário de bordo Recursos avançados no PHP Exemplos de código Orientação a objetos Exemplos de código PDO Exemplos de código

Classe - tipo de dado definido com atributos e métodos Objeto - uma instância de uma classe Atributo - dados de uma classe Método - funções de uma classe Herança - extensão de uma classe

Diário de bordo Recursos avançados no PHP Exemplos de código Orientação a objetos Exemplos de código PDO Exemplos de código

Persistência utilizando o PDO

PDO é uma extensão do PHP utilizada para a abstração do acesso ao SGBD.

Abstração do acesso a diversos bancos de dados; Segurança Orientado a objetos Expansível

Ativando a extensão para o SGBD: Isso é feito no arquivo php.ini, extension=php_pdo_mysql.dll extension=php_pdo_pgsql.dll extension=php_pdo_odbc.dll extension=php_pdo_oci.dll

Descobrindo quais drivers estão disponíveis no seu PHP: foreach(pdo::getavailabledrivers() as $driver){ echo $driver.'<br />'; }

MySQL PostgreSQL Microsoft SQL Server/Sybase IBM DB2 Oracle Informix Firebird ODBC SQLite

PDO Representa a conexão PDOStatement Representa um comando preparado e um result set associado PDOException Lança uma exceção do banco de dados

As consultas são compiladas uma vez no nível do servidor e em seguida os parâmetros são passados Benefícios do uso de Prepared Statements: Maior desempenho Maior segurança Mais portátil

As declarações preparadas são tratadas em uma ordem específica: 1. Compila (prepare) a declaração Única etapa onde é necessário adicionar os passos para acessar um banco de dados 2. Executa a consulta com ou sem parâmetros 3. Recupera os resultados Os resultados são recuperados de um objeto

Buscando um usuário pelo ID 1. Abrir uma conexão $conn = new PDO ("mysql:host=$host;dbname=$db",$user,$pass); 2. Compilar (preparar) a declaração $stmt = $conn->prepare("select * FROM users WHERE id = :id"); 3. Preenchendo os parâmetros opcionais $stmt->bindvalue(':id', $id); 4. Executar a consulta $stmt->execute(); // Retorna verdadeiro ou falso 5. Recuperar os resultados $result = $stmt->fetch(pdo::fetch_assoc);

fetch () pode ter várias opções ($pdo->fetch (PDO::FETCH_LAZY)) PDO::FETCH_ASSOC: Retorna um array associativo PDO::FETCH_BOTH: Retorna um array associativo e numérico PDO::FETCH_BOUND: Retorna true e vincula os valores em seu bindcolumn () da declaração para os valores de retorno PDO::FETCH_CLASS: Retorna uma nova instância da classe especificada com propriedades populadas que mapeiam o result set

PDO::FETCH_INTO: o Retorna como objeto e preenche as propriedades com valores mapeados a partir dos nomes das colunas PDO::FETCH_LAZY: o Combina FETCH_BOTH e FETCH_OBJ PDO::FETCH_NUM: o Retorna um array numérico PDO::FETCH_OBJ: o Retorna um objeto anônimo (stdclass) com nomes de propriedades correspondentes aos nomes das coluna

O PDO tem suporte a transações $conn->begintransaction(); $conn->commit(); $conn->rollback(); $conn = null;

Uma forma rápida de se recuperar os dados de uma consulta: foreach($conn->query("select * FROM users") as $row){ // código }

Retornando uma lista de usuários: try { $conn = new PDO("mysql:host=$host;dbname=$db", $user,$pass); $result = $conn->query('select * FROM users'); } catch (PDOException $e) { echo $e->getmessage(); return false; } return $result;

Adicionando um usuário utilizando transação try { $conn = new PDO("mysql:host=$host;dbname=$db",$user,$pass); $conn->begintransaction(); $stmt = $conn->prepare('insert INTO users(nome, email, telefone) values (:nome, :email, :telefone)'); $stmt->bindvalue(':nome', $user["nome"]);... $stmt->execute(); $conn->commit(); } catch (PDOException $e) { } $conn->rollback(); echo $e->getmessage(); return false; return true;

Código poderoso. Classes Model e Classes Controller. Diminuir quantidade de código PHP misturado entre tags HTML. Implementação e uso de Design Patterns.

A classe Connection herda a classe PDO class Connection extends PDO { private static $connection; public function Connection($dsn, $user="", $pass="") { parent:: construct($dsn, $username, $password); } (continua)

public static function getconnection(){ // Design Pattern Singleton if(!isset(self::$connection)) { try { self::$connection = new Connection('mysql:host=127.0.0.1; dbname=season','teste','123'); } catch (PDOException $e) { echo $e->getmessage(); } } return self::$connection; }

class User { private $id; private $nome; private $email; private $telefone; //... getters and setters public function listusers(){... } public function adduser($user){... } public function edituser($user){... } public function removeuser($user){... } public function getuserbyid($id){... }

require_once 'User.php'; if($_server['request_method'] == 'POST') { $actionuser = new User(); if ($_REQUEST['action'] == 'add') { if($actionuser->adduser($_request)) { echo "<script> alert('usuario inserido com sucesso!'); </script>"; echo "<meta http-equiv='refresh' content='0; url=../templates/listusers.php'>"; } else { echo "<script> alert('ocorreu uma falha, tente novamente!'); </script>"; echo "<meta http-equiv='refresh' content='0; url=../templates/formadduser.php'>"; } (... )

Esta apresentação será disponibilizada por link através do perfil

Obrigado! How to Follow: @GrupoSeason,, @Zend, @phpbrasil, @phpsp, @Globalcode Contato pessoal: edgar.cbbrasil@gmail.com