90
Web sites dinâmicos: PHP com orientação a objetos Maradona Morais

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

Embed Size (px)

Citation preview

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

Maradona Morais

Sobre o minicurso

DURAÇÃO

8 horas

2 dias

4 h/d

MATERIAL

- Slides

- Apostila

e-mail

PRODUTO

Estudo de caso

ATM

O que faremos

DIA 1Teoria + prática

DIA 2Estudo de caso

Slides + exemplos + apostila

2º edição do livro Desenvolvendo Websites com PHP – novatec

Para melhor entender como funciona o PHP é

necessário entender como funciona a WEB

Computador Servidorhttp GET www.ifrn.edu.br/informatica.html

http response

<html> … </html>

Exemplo com uma página HTML

Produto (html)

Computador

Servidor

http GET www.ifrn.edu.br/informatica.php

http response

<html> … </html>

Com um PHP...

Modelo (php)

Produto (html)

Fonte: Spectrum / IEEE (2014)

RasmusLerdorf

PersonalHome Page

HypertextPreprocessor

+244M

Vamos começar! Prontos?

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

Primeiro exemplo em PHP

Tipos de dados

Numéricos

Alfanuméricos

Booleanos

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

Alfanuméricos (Strings)

● Existem três formas de utilizar Strings:– Com aspas simples (');– Com aspas duplas (“);– Com aspas invertidas (`)

Strings com aspas simples

● O valor da variável será exatamente o texto contido entre as aspas.

● Permite interpolar variáveis● Cuidado! Caracteres especiais:

– \n (nova linha)– \t (tab)– \\ (barra invertida)– \$ (cifrão)

– \' (aspa simples)– \“ (aspa dupla)

Strings com aspas duplas

Strings com aspas duplas

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)

Valores booleanos

● Representam um estado binário:– Verdadeiro (true)– Falso (false)

Variáveis e constantes

Sintaxe de uma variável PHP

$nome = “Rasmus Lerdorf”;

cifrão

identificador

valor

ponto e vírgula

Lembre-se: Ponto e vírgula, sempre!

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

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);

Arrays

O que é Array

● Array, ou vetor, é um conjunto de variáveis. Possui várias formas sintáticas:

Outra forma...

...e outra forma

Operadores

Aritméticos

De comparação

Lógicos

Concatenação

Operadores aritméticos

Operador Operação

+ Adição

- Subtração

* Multiplicação

/ Divisão

% Resto da divisão

Operadores de comparação

● Sempre retorna uma valor booleanoOperador 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

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

Concatenação

● Usa­se o ponto (.) para unir dois valores mistos.

Estruturas de controle e repetição

If (condicional)

Switch (escolha)

While (repetição condicional)

For (repetição de passo)

Foreach (repetição para cada)

If (condicional)

● Sintaxe:

if (condicao) {instruções

} elseif(condicao2) {instruções

} else {instruções

}

Switch (escolha)

● Sintaxe:

switch (variavel) {case valor1:

instruçõesbreak;

case valor2:instruçõesbreak;

default:instruçõesbreak;

}

While (repetição condicional)

● Sintaxe:

while(condicao) {

instruções

}

For (repetição de passo)

● Sintaxe:

for (inicializacao; condicao; passo) {

instruções

}

Exemplo 12

Exemplo 13

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.

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

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.

Foreach (para cada)

● Usada em vetores. Sintaxe:

foreach(vetor as key) {

instruções para cada valor no vetor

}

Exemplo com foreach

Objetos

Orientação a objetos

● Por que? Deixa o nosso codigo mais organizado e modulariza as nossas instruções.

● Objeto

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

O que dá pra fazer com uma lâmpada?

Ligada: boleano Potência: inteiro

LigarDesligar

● Mudar o estado– Ligar– Desligar

Ligar e desligar são funções de uma lâmpada

Isto é um objeto

● Objeto  é  toda representação de uma entidade  que  possui funções e atributos.Ligada: boleano

Potência: inteiro

LigarDesligar

Funções em PHP

● Sintaxe:

function nome_funcao(arg1, arg2... , argn) {

comandos

[return <expressao>]

}

Exemplo de função (não é de um objeto)

Já sabemos como funciona uma função, sabemos o que

são atributos... Cadê os objetos?

Para termos objetos precisamos de classes

● Sintaxe de uma classe:

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.

A variável $this

● Usada quando se quer chamar um método ou atributo da própria classe.

Exemplo 15 – Classe Loja (loja.class.php)

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.

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;

Criando um objeto de Loja (exemplo16.php)

Construtor e destrutor

● Método que dá valores iniciais e finais de um objeto

Exemplo com _construct() e _destruct()

Para que o usuário “fale” com nosso programa ele precisa de um meio: os

formulários!

Formulários HTML

● Os formulários são feitos utilizando a linguagem HTML

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ãopara envio do formulário!

Diferentes inputs

– Radio

– Checkbox

Select

Crie um formulário para cadastrar uma pessoa

● O formulário deve conter:– nome– sobrenome– email– cidade– estado (select com 3 estados)

Código (formulario.html)

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

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

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

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']

Criando a receber_dados.php

“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.

● 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)

Código final (recebe_dados.php)

Atualize o código da classe Pessoa

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.

COOKIE E SESSÃO

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

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']

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

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()

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