Minicurso - Web sites dinâmicos: PHP com orientação a objetos

412 visualizações

Publicada em

Slides do minicurso "Web sites dinâmicos: PHP com orientação a objetos" feito no IFRN Apodi.

Publicada em: Software
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
412
No SlideShare
0
A partir de incorporações
0
Número de incorporações
22
Ações
Compartilhamentos
0
Downloads
26
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Minicurso - Web sites dinâmicos: PHP com orientação a objetos

  1. 1. Web sites dinâmicos: PHP com orientação a objetos Maradona Morais
  2. 2. Sobre o minicurso DURAÇÃO 8 horas 2 dias 4 h/d MATERIAL - Slides - Apostila e-mail PRODUTO Estudo de caso ATM
  3. 3. O que faremos DIA 1Teoria + prática DIA 2Estudo de caso
  4. 4. Slides + exemplos + apostila 2º edição do livro Desenvolvendo Websites com PHP – novatec
  5. 5. Para melhor entender como funciona o PHP é necessário entender como funciona a WEB
  6. 6. Computador Servidorhttp GETwww.ifrn.edu.br/informatica.html http response <html> … </html> Exemplo com uma página HTML Produto (html)
  7. 7. Computador Servidor http GETwww.ifrn.edu.br/informatica.php http response <html> … </html> Com um PHP... Modelo (php) Produto (html)
  8. 8. Fonte: Spectrum / IEEE (2014)
  9. 9. Rasmus Lerdorf Personal Home Page Hypertext Preprocessor
  10. 10. +244M
  11. 11. Vamos começar! Prontos?
  12. 12. Sumário ● Tipos de dados – Numéricos – Alfanuméricos – Booleanos (true or false) ● Variáveis e constantes ● Arrays ● Operadores – Aritméticos – De comparação – Lógicos – Concatenação ● Estruturas de controle – If – Switch – While – For – Foreach ● Orientação a objetos – Classes ● Métodos ● Atributos ● Trabalhando com formulários – $_GET – $_POST ● $_SESSION ● $_COOKIE ● $_SERVER
  13. 13. Primeiro exemplo em PHP
  14. 14. Tipos de dados Numéricos Alfanuméricos Booleanos
  15. 15. Numéricos Dados Descrição 5 Valor inteiro de base decimal 4,012 Valor real com três casas decimais ,14 Valor real com duas casas decimais 033 Valor inteiro na base octal. Todo valor iniciado com 0 é considerado de base 8 0xBC Valor inteiro na base hexadecimal. Todo valor iniciado com 0x é considerado de base 16 43000000 É um numero real grande, que pode ser expresso por 4.3E+7
  16. 16. Alfanuméricos (Strings) ● Existem três formas de utilizar Strings: – Com aspas simples ('); – Com aspas duplas (“); – Com aspas invertidas (`)
  17. 17. Strings com aspas simples ● O valor da variável será exatamente o texto  contido entre as aspas.
  18. 18. ● Permite interpolar variáveis ● Cuidado! Caracteres especiais: – n (nova linha) – t (tab) –  (barra invertida) – $ (cifrão) – ' (aspa simples) – “ (aspa dupla) Strings com aspas duplas
  19. 19. Strings com aspas duplas
  20. 20. Strings com aspas invertidas ● Utilizada para dar instruções para o sistema  operacional. Este exemplo imprime os nomes das páginas no mesmo diretório com extensão .html (No linux)
  21. 21. Valores booleanos ● Representam um estado binário: – Verdadeiro (true) – Falso (false)
  22. 22. Variáveis e constantes
  23. 23. Sintaxe de uma variável PHP $nome = “Rasmus Lerdorf”; cifrão identificador valor ponto e vírgula Lembre-se: Ponto e vírgula, sempre!
  24. 24. Dando nome para variáveis ● Sempre iniciam com o sinal cifrão ($) e são case­sensitive – Alguns nomes válidos: $bill                                        $head_count $MaximumForce                   $I_HEART_PHP $_underscore                          $_int – Alguns nomes ilegais: $not valid                                $| $3wa – Todas estas são diferentes: $hot_stuff                   $Hot_stuff $hot_Stuff                     $HOT_STUFF
  25. 25. Contantes ● Criadas com o propósito de não mudar de valor  durante execução. Sintaxe: – bool define(string nome, misto valor [, bool case_insensitive]) ● Exemplo: – define(“SOBRENOME”, “Ferreira”); – define(“SOBRENOME”, “Ferreira”, true);
  26. 26. Arrays
  27. 27. O que é Array ● Array, ou vetor, é um conjunto de variáveis.  Possui várias formas sintáticas:
  28. 28. Outra forma...
  29. 29. ...e outra forma
  30. 30. Operadores Aritméticos De comparação Lógicos Concatenação
  31. 31. Operadores aritméticos Operador Operação + Adição - Subtração * Multiplicação / Divisão % Resto da divisão
  32. 32. Operadores de comparação ● Sempre retorna uma valor booleano Operador Descrição op1==op2 Verdadeiro se op1 for igual a op2 op1>=op2 Verdadeiro se op1 for maior ou igual a op2 op1<=op2 Verdadeiro se op1 for menor ou igual a op2 op1!=op2 Verdadeiro se op1 for diferente op1<>op2 Também serve para representar diferença op1>op2 Verdadeiro se op1 for maior que op2 op1<op2 Verdadeiro se op1 for menor que op2
  33. 33. Operadores lógicos Operador Descrição !op1 Verdadeiro se op1 for falso op1 AND op2 Verdadeiro se op1 E op2 forem verdadeiros op1 OR op2 Verdadeiro se op1 OU op2 forem verdadeiros op1 XOR op2 Verdadeiro se só op1 ou só op2 for verdadeiro op1 && op2 Verdadeiro se op1 E op2 forem verdadeiros op1 || op2 Verdadeiro se op1 OU op2 forem verdadeiros
  34. 34. Concatenação ● Usa­se o ponto (.) para unir dois valores mistos.
  35. 35. Estruturas de controle e repetição If (condicional) Switch (escolha) While (repetição condicional) For (repetição de passo) Foreach (repetição para cada)
  36. 36. If (condicional) ● Sintaxe: if (condicao) { instruções } elseif(condicao2) { instruções } else { instruções }
  37. 37. Switch (escolha) ● Sintaxe: switch (variavel) { case valor1: instruções break; case valor2: instruções break; default: instruções break; }
  38. 38. While (repetição condicional) ● Sintaxe: while(condicao) { instruções }
  39. 39. For (repetição de passo) ● Sintaxe: for (inicializacao; condicao; passo) { instruções }
  40. 40. Exemplo 12
  41. 41. Exemplo 13
  42. 42. Exercite-se  Crie um algoritmo que mostre a tabuada do número 9.  Crie um algoritmo com uma matriz 4x4 e escreva os elementos da diagonal principal.
  43. 43. Desafio 1  Chico tem 1,50m e cresce 2 centímetros por ano, enquanto Juca tem 1,10m e cresce 3 centímetros por ano. Faça um algoritmo que calcule quantos anos serão necessários para que Juca seja maior que Chico
  44. 44. Desafio 2  Na usina de Angra dos Reis, os técnicos analisam a perda de massa de um material radioativo. Sabendo-se que este perde 25% de sua massa a cada 30 segundos, crie um algoritmo que imprima o tempo necessário para que a massa desse material seja menor que 0.10.
  45. 45. Foreach (para cada) ● Usada em vetores. Sintaxe: foreach(vetor as key) { instruções para cada valor no vetor }
  46. 46. Exemplo com foreach
  47. 47. Objetos
  48. 48. Orientação a objetos ● Por que? Deixa o nosso codigo mais organizado  e modulariza as nossas instruções. ● Objeto
  49. 49. O que tem uma lâmpada? Ligada: boleano Potência: inteiro ● Ela tem estado – Ligada (true) – Desligada (false) ● Ela tem potência – 60W, 24W, 100W... Estado e potência são atributos da lâmpada
  50. 50. O que dá pra fazer com uma lâmpada? Ligada: boleano Potência: inteiro Ligar Desligar ● Mudar o estado – Ligar – Desligar Ligar e desligar são funções de uma lâmpada
  51. 51. Isto é um objeto ● Objeto  é  toda  representação de uma  entidade  que  possui  funções e atributos.Ligada: boleano Potência: inteiro Ligar Desligar
  52. 52. Funções em PHP ● Sintaxe: function nome_funcao(arg1, arg2... , argn) { comandos [return <expressao>] }
  53. 53. Exemplo de função (não é de um objeto)
  54. 54. Já sabemos como funciona uma função, sabemos o que são atributos... Cadê os objetos?
  55. 55. Para termos objetos precisamos de classes ● Sintaxe de uma classe:
  56. 56. A variável $this ● Uma pseudo variável $this está disponível  quando um método da classe é chamado dentro  de um contexto de objeto. ● Sua implementação normalmente se encontra  dentro do escopo de um método. ● $this é uma referência para o objeto que  chama o método ou o atributo.
  57. 57. A variável $this ● Usada quando se quer chamar um método ou  atributo da própria classe.
  58. 58. Exemplo 15 – Classe Loja (loja.class.php)
  59. 59. Encapsulamento de um método / atributo ● Indica a visibilidade de um método ou atributo  no contexto de objeto. – Public – o método/atributo pode ser chamado por  qualquer código. – Private – o método/atributo só pode ser chamado  pela própria classe que define o objeto.
  60. 60. Criando objeto de uma classe ● Para criar um objeto de uma classe fazemos: $variavel = new Nome_da_Classe(); ● Para chamar um método public: $variavel­>nome_metodo([argumentos]); ● Para chamar um atributo public: $variavel­>atributo;
  61. 61. Criando um objeto de Loja (exemplo16.php)
  62. 62. Construtor e destrutor ● Método que dá valores iniciais e finais de um  objeto
  63. 63. Exemplo com _construct() e _destruct()
  64. 64. Para que o usuário “fale” com nosso programa ele precisa de um meio: os formulários!
  65. 65. Formulários HTML ● Os formulários são feitos utilizando a linguagem  HTML
  66. 66. Tipos de dados nos formulários ● Podemos alterar o type de um input para obtermos  diferentes tipos de entradas: – text – checkbox – radio – number – email – date – 17 outros O type=”submit” gera um botão para envio do formulário!
  67. 67. Diferentes inputs – Radio – Checkbox
  68. 68. Select
  69. 69. Crie um formulário para cadastrar uma pessoa ● O formulário deve conter: – nome – sobrenome – email – cidade – estado (select com 3 estados)
  70. 70. Código (formulario.html)
  71. 71. Como tratar estes dados com PHP? ● Perceba que temos no nosso formulário: <form action=“receber_dados.php” method=“post”> ● O method indica a forma pela qual os dados serão  repassados para a página indicada em action. ● Para isso conheçamos os métodos POST e GET
  72. 72. Método GET ● É o método padrão para envio de dados. ● Os dados serão enviados juntamente com o  nome da página (na URL) que receberá os  dados. Ex: receber_dados.php?nome=Chico&idade=17
  73. 73. Método POST ● O método POST envia os dados do formulário  por meio do corpo da mensagem encaminhada  ao servidor. A URL fica: receber_dados.php
  74. 74. Recebendo os dados ● O PHP possui dois arrays superglobais para  recepção de informações: – $_GET[] ­ Recebe dados do método GET ● $_GET['nome'], $_GET['email'] – $_POST[] ­ Recebe dados do método POST ● $_POST['nome'], $_POST['email']
  75. 75. Criando a receber_dados.php
  76. 76. “Toda entrada deve ser filtrada” ● Nunca confie no usuário. Sempre verifique a  entrada. – Inteiro tem que ser inteiro, texto tem que ser texto. ● htmlspecialchars(string); – Impede que o usuário insira tags HTML como  entrada.
  77. 77. ● empty($var); – Retorna verdadeiro se a variável for vazia ● strlen($string); – Retorna o número de letras na string ● strstr($string, string delimitador); – Acha a primeira ocorrência de uma string (utilizada  em e­mails, por exemplo)
  78. 78. Código final (recebe_dados.php)
  79. 79. Atualize o código da classe Pessoa
  80. 80. Como manter os nossos dados ● Para uma aplicação web é importante manter  uma persistência de dados.  ● PHP dá suporte nativo à maioria dos bancos de  dados. ● Não iremos, infelizmente, trabalhar com banco  de dados. Porém, veremos como manter uma  persistência dos dados inseridos pelo usuário.
  81. 81. COOKIE E SESSÃO
  82. 82. Cookie ● Funciona como uma variável ● Armazena um único valor ● Depende do navegador – Armazena dados no navegador do usuário ● Move de página a página
  83. 83. Cookie ● Definindo um cookie – setcookie() armazena dado em cookies – Sintaxe: setcookie(“cookie name”, “valor”) – Aceita um terceiro argumento opcional ● Definir uma data de expiração para o cookie Ex: setcookie('username', 'asscssh', time()+(60*60)); ● Chamando um cookie – Usando a super global $_COOKIE Ex: $_COOKIE['username']
  84. 84. Session ● Permanece pelo tempo em que o usuário está na  aplicação ● Pouco espaço no servidor ● Mais seguro ● Automaticamente deletada quando o navegador  é fechado ● Armazena na super global $_SESSION
  85. 85. Session ● Inicializando um sessão – Utilizamos a função session_start() ● Deve ser a primeira linha do código ● Finalizando um sessão – Utilizamos a função session_destroy()
  86. 86. Planejando um estudo de caso - ATM Usuário - String nome - String sobrenome - Conta conta Sistema - array [ ][ ] infos + void initInfos() + Usuario autenticar(conta, senha) + atualizaValor(valor, conta) + pegaSaldo(conta) Conta - int numero - int senha - float saldo + depositar(valor) + sacar(valor) + transferir(valor, conta) us SESSION

×