Você está na página 1de 57

Minicurso PHP 5

Vincius Costa de Souza


viniciuscs@unisinos.br

Julho de 2005

Programao PHP PHP 5

Apresentaes
Nome Experincias com programao Conhecimentos de linguagens WEB / HTML Expectativas referentes ao curso

Vincius Costa de Souza - Julho de 2005 / 2

Programao PHP PHP 5

Programa
Introduo Manipulao de dados Operadores Estruturas de controle Funes PHP e formulrios HTML Manipulao de arquivos Sesses e Cookies PHP OO
Vincius Costa de Souza - Julho de 2005 / 3

Programao PHP PHP 5

Introduo
O que PHP? Hypertext Processor linguagem de script para a Web server side embutida no HTML Diferenas? PHP x HTML PHP x JavaScript PHP x CGI
Vincius Costa de Souza - Julho de 2005 / 4

Programao PHP PHP 5

Introduo
Por que utilizar PHP? linguagem mais utilizada na Web cdigo-fonte aberto possui muitos recursos prontos (extenses) amplo suporte a bancos de dados portvel estvel rpido fcil de aprender
Vincius Costa de Souza - Julho de 2005 / 5

Programao PHP PHP 5

Introduo
Material na Web
http://www.php.net http://zend.com http://phpfaqts.com http://phpbuilder.com www.phphub.com www.phppaterns.com www.phpclasses.org www.sourceforge.net http://pear.php.net http://phpbrasil.com
Vincius Costa de Souza - Julho de 2005 / 6

Programao PHP PHP 5

Introduo
Noes bsicas de programao em PHP tags limitadoras de um programa PHP comentrios (como e porqu?) comandos para sada na tela finalizao das linhas de comando PHP dentro de cdigo HTML HTML dentro do cdigo PHP caractere identificador de varivel
Vincius Costa de Souza - Julho de 2005 / 7

Programao PHP PHP 5

Introduo
Exerccio Criar uma pgina em PHP para exibio da data e hora atual.

Vincius Costa de Souza - Julho de 2005 / 8

Programao PHP PHP 5

Manipulao de dados
Numricos inteiro ( 5 ) real ( 4.432 ) Alfanumricos aspas simples ( ' ) aspas duplas ( " ) aspas invertidas ( ) caractere de controle ( \ )

Vincius Costa de Souza - Julho de 2005 / 9

Programao PHP PHP 5

Manipulao de dados
Variveis no necessrio declarar as variveis em PHP iniciam sempre com o caractere $ no podem iniciar com nmeros PHP case-sensitive Constantes armazenam dados que no so alterados referencia-se diretamente pelo nome (sem $) define (<nome_constante>,<valor>);
Vincius Costa de Souza - Julho de 2005 / 10

Programao PHP PHP 5

Manipulao de dados
Arrays podem armazenar mais de um valor, pois possuem alm de um nome identificador um ndice que pode ser numrico ou textual o ndice aparece entre colchetes [] e aps o nome ndices numricos iniciam sempre em zero os valores atribudos podem ser de tipos diferentes podem ser uni ou multidimensionais

Vincius Costa de Souza - Julho de 2005 / 11

Programao PHP PHP 5

Manipulao de dados
Exerccio Crie um array chamado estado para armazenar neste as capitais dos estados na regio sul do Brasil, utilizando como ndice as sigla dos estados.

Vincius Costa de Souza - Julho de 2005 / 12

Programao PHP PHP 5

Operadores
Aritmticos
+ * / -oper ++oper --oper oper++ oper-ADIO SUBTRAO MULTIPLICAO DIVISO TROCA SINAL PR-INCREMENTO PR-DECREMENTO PS-INCREMENTO PS-DECREMENTO

Vincius Costa de Souza - Julho de 2005 / 13

Programao PHP PHP 5

Operadores
Condicionais
X == Y X >= Y X <= Y X != Y X <> Y X > Y X < Y X IGUAL A Y X MAIOR OU IGUAL A Y X MENOR OU IGUAL A Y X DIFERENTE DE Y X DIFERENTE DE Y X MAIOR QUE Y X MENOR QUE Y
Vincius Costa de Souza - Julho de 2005 / 14

Programao PHP PHP 5

Operadores
Atribuio
$num = 5; $num += 5; $num -= 5; $num *= 5; $num /= 5; $nome .= aluno; $num = $num + 5; $num = $num - 5; $num = $num * 5; $num = $num / 5; $nome = $nome.aluno;
Vincius Costa de Souza - Julho de 2005 / 15

Programao PHP PHP 5

Operadores
Lgicos

!X X AND Y X OR Y X XOR Y X && Y X || Y

verdadeiro se X for falso verdadeiro se X e Y forem verdadeiros verdadeiro se X ou Y forem verdadeiros verdadeiro se apenas um for verdadeiro verdadeiro se X e Y forem verdadeiros verdadeiro se X ou Y forem verdadeiros
Vincius Costa de Souza - Julho de 2005 / 16

Programao PHP PHP 5

Operadores
Exerccio Quais so os valores das variveis $a, $b, $c, $x, $y e $z aps a execuo do seguinte programa: $a=2; $b=4; $c=6; $x= --$c + $b; $y= $b++ + $a; $z= $a - $b--;

Vincius Costa de Souza - Julho de 2005 / 17

Programao PHP PHP 5

Estruturas de controle
Condicional (if ... else)
$nota = ($N1 + 2*$N2)/3; if ( $nota > 9.5 ) $resultado = Aprovado com distino; elseif ( ($nota >= 8) and ($nota <= 9.5) ) $resultado = Aprovado plenamente; elseif else $resultado = Reprovado; echo Voc foi $resultado em seu TCC;
Vincius Costa de Souza - Julho de 2005 / 18

( ($nota >= 6) and ($nota <= 7.9) )

$resultado = Aprovado;

Programao PHP PHP 5

Estruturas de controle
Condicional (switch)
switch ($opcao){ echo "Voc escolheu a opo SIM"; break; case "n": echo "Voc escolheu a opo NO"; break; default: echo "A opo digitada invlida"; break; }
Vincius Costa de Souza - Julho de 2005 / 19

case "s":

Programao PHP PHP 5

Estruturas de controle
Repetio (while)
$cont = 1; while ( $cont < 10 ){ echo "O valor atual do contador $cont <br>"; $cont++; }

Repetio (do ... while)


$cont = 0; do { $cont++; echo "O valor atual do contador $cont <br>"; } while ($cont < 10);
Vincius Costa de Souza - Julho de 2005 / 20

Programao PHP PHP 5

Estruturas de controle
Repetio (for)
for ($cont=100; $cont >= 0; $cont--):
echo "O valor da varivel \$cont $cont <br>";

endfor;

Repetio (foreach)
$vetor = array ("um"=>1, "dois"=>2, "trs"=>3); foreach ($vetor as $chave => $valor){ echo "O valor de \$vetor[$chave] $valor <br>"; }
Vincius Costa de Souza - Julho de 2005 / 21

Programao PHP PHP 5

Estruturas de controle
Exerccio Crie um array chamado curso que armazene as seguintes informaes sobre esse curso: - nome - data - carga horria - local Utilize strings para os ndices do array. Utilize foreach para imprimir o array neste formato: Nome do curso: PHP 5 Informao armazenada em $curso[nome]
Vincius Costa de Souza - Julho de 2005 / 22

Programao PHP PHP 5

Funes
torna os programas mais organizados e modulares uma funo pode ou no receber argumentos em sua chamada (por valor ou por referncia &) o comando return opcional e serve para que a funo retorne um valor sempre que o PHP encontra uma chamada para uma funo, a execuo do programa interrompida e o fluxo de execuo passa para o incio da funo

Vincius Costa de Souza - Julho de 2005 / 23

Programao PHP PHP 5

Funes
function lista_aprovados($alunos){ for ($i=0; $i < sizeof($alunos); $i++){ $media = ($alunos[$i]["n1"] + 2*$alunos[$i]["n2"])/3; if ($media >= 6){ $aprovados[] = $alunos[$i]["nome"]; } } return $aprovados; }

Vincius Costa de Souza - Julho de 2005 / 24

Programao PHP PHP 5

Funes
Pr-definidas array - cria um array sort - ordena um array sizeof - obtm o nmero de elementos de um array strchr - encontra a primeira ocorrncia de um caractere strlen - obtm o tamanho de uma string substr - retorna uma parte da string split - subdivide uma string em vrias strings str_replace - substitui as ocorrncias de uma string date - formata data e hora
Vincius Costa de Souza - Julho de 2005 / 25

Programao PHP PHP 5

Funes
include e require funes que permitem reaproveitar funes ou arquivos, utilizando-os em diversas pginas do site. tem por objetivo incluir um arquivo dentro de outro.

include

nome_arquivo.inc.php;

require nome_arquivo.inc.php;

Vincius Costa de Souza - Julho de 2005 / 26

Programao PHP PHP 5

Funes
Exerccio
Criar uma funo que recebe um array chamado alunos que contenha o nome, nota 1 e nota 2 dos seguintes alunos.
Nome Aline dos Santos Bianca da Silva Carlos Pedroso Eduardo Romero Fabiane Almeida N1 6,5 7,8 5,6 3,7 9,1 N2 2,9 8,6 5,9 8,6 6,7

A funo deve calcular a mdia (N1 + 2*N2)/3 e retornar um outro array chamado aprovados que deve armazenar o nome e a mdia dos alunos aprovados. O programa para imprimir a listagem dos aprovados, em ordem alfabtica, com suas mdias finais.
Vincius Costa de Souza - Julho de 2005 / 27

Programao PHP PHP 5

PHP e Formulrios HTML


criados em HTML possuem no mnimo: 5. um campo para entrada de dados 6. um boto para enviar os dados 7. endereo de destino para os dados enviados
Vincius Costa de Souza - Julho de 2005 / 28

Programao PHP PHP 5

PHP e Formulrios HTML


<FORM action="cadastro.php" method="post"> <INPUT type="text" name="nome" size="30" maxlength="150"> <INPUT type="password" name="senha" size="10" maxlength="150"> <SELECT name="select"> <option value="RS">RS</option> <option value="SC">SC</option> <option value="PR">PR</option> </SELECT> <TEXTAREA name="COMENTARIO" cols="30" rows="10" wrap="physical"> </TEXTAREA> <INPUT type="checkbox" name="fds" value="FDS"> <INPUT type="checkbox" name="lgr" value="LGR"> <INPUT type="radio" name="noticias" value="sim"> <INPUT type="radio" name="noticias" value="nao"> <INPUT TYPE="submit" value="Enviar os dados acima"> <INPUT TYPE="reset" value="Limpar"> </FORM>
Vincius Costa de Souza - Julho de 2005 / 29

Programao PHP PHP 5

PHP e Formulrios HTML


Mtodos de envio GET mtodo padro, atravs do qual os dados so enviados com o nome da pgina que receber os dados www.site.com.br/programa.php?nome=vinicius&idade=27 desvantagens ? POST envia os dados por meio do corpo da mensagem enviada ao servidor www.site.com.br/programa.php vantagens?
Vincius Costa de Souza - Julho de 2005 / 30

Programao PHP PHP 5

PHP e Formulrios HTML


Tratando os dados recebidos como variveis - apenas acrescenta-se o smbolo $ antes do nome definido no form como array do PHP arrays definidos pelo PHP que armazenam as informaes enviadas pelo GET $_GET POST $_POST Neste caso, as chaves dos arrays so os nomes dos campos do formulrio HTML
Vincius Costa de Souza - Julho de 2005 / 31

Programao PHP PHP 5

PHP e Formulrios HTML


Exerccio
Crie 3 arquivos (cadastro1.php, cadastro2.php e fim_cadastro.php) No arquivo cadastro1.php crie um form com os seguintes campos, que devem ser enviados para o arquivo cadastro2.php: - Nome (text - no pode estar vazio e deve ter sobrenome) - Sexo (radio) No arquivo cadastro2.php crie um form com os campos abaixo, que devem ser remetidos para o arquivo fim_cadastro.php: - Senha (password com mnimo de 5 caracteres) - Comentrio: (textarea de 30 colunas e 6 linhas) O arquivo fim_cadastro.php deve receber e imprimir na tela todos os dados do cadastro (form1 e form2)
Vincius Costa de Souza - Julho de 2005 / 32

Programao PHP PHP 5

Manipulao de arquivos
Quando necessitamos armazenar poucos dados, podemos fazer isso em arquivos texto para termos um acesso mais rpido as informaes. Atravs do PHP podemos: abrir um arquivo ler um arquivo escrever em um arquivo fechar um arquivo fopen fread fwrite fclose

Vincius Costa de Souza - Julho de 2005 / 33

Programao PHP PHP 5

Manipulao de arquivos
modos possveis para a funo fopen r abre somente para leitura (ponteiro no incio)

r+ abre para leitura e escrita (ponteiro no incio) w abre somente para escrita (cria ou zera) w+ abre para leitura e escrita (cria ou zera) a abre somente para escrita (ponteiro no final) a+ abre para leitura e escrita (ponteiro no final)
Vincius Costa de Souza - Julho de 2005 / 34

Programao PHP PHP 5

Manipulao de arquivos
Exemplos
Leitura

$arq = fopen ("nome_arquivo.txt", "r"); while (!feof ($arq)) { $linha = fread($arq,1024); echo $linha; } fclose ($arq);
Escrita

$arquivo = fopen("cadastro.txt","a+"); fwrite ($arquivo,$nome."##".$email."\n"); fclose($arquivo);


Vincius Costa de Souza - Julho de 2005 / 35

Programao PHP PHP 5

Manipulao de arquivos
Exerccio Modificar o arquivo fim_cadastro.php para que os dados do cadastro sejam armazenados em arquivo (cadastros.txt). Aps, faa testes simulando cadastros e consultando o arquivo para verificar se os dados esto sendo armazenados. Ateno com a permisso para escrita no arquivo

Vincius Costa de Souza - Julho de 2005 / 36

Programao PHP PHP 5

Sesses e Cookies
Sesso trata-se de um perodo de tempo enquanto uma pessoa particular navega por determinado site. atravs das sesses, podemos registrar variveis, as quais estaro disponveis em todas as pginas enquanto o usurio estiver navegando pelo site.

Vincius Costa de Souza - Julho de 2005 / 37

Programao PHP PHP 5

Sesses e Cookies
Sesso
session_start(); session_register("nome_usuario"); session_register("login_usuario"); session_register("senha"); $_SESSION['nome_usuario'] = $nome_banco; $_SESSION['login_usuario'] = $login_banco; $_SESSION['senha'] = $senha_banco;

Vincius Costa de Souza - Julho de 2005 / 38

Programao PHP PHP 5

Sesses e Cookies
Cookies pequenos fragmentos de informao retidos na mquina do cliente, quer na memria do Browser, quer em um arquivo gravado no HD. cada cookie contm um par nome/valor. configurar um cookie significa associar um par valor/nome e armazenar no lado cliente. obter ou ler um cookie significa utilizar o nome para recuperar o valor vantagens e desvantagens
Vincius Costa de Souza - Julho de 2005 / 39

Programao PHP PHP 5

Sesses e Cookies
Cookies Sintaxe
setcookie(nome,valor,validade,caminho,dominio,seguro);

Exemplo
setcookie("user","joao",time()+86400);

Trs dicas importantes


Vincius Costa de Souza - Julho de 2005 / 40

Programao PHP PHP 5

Sesses e Cookies
Exerccio Modificar os arquivos cadastro1.php, cadastro2.php e fim_cadastro.php para que os dados dos formulrios sejam gravados em sesso (cadastro 1 e 2) e recuperados da sesso (fim_cadastro).

Vincius Costa de Souza - Julho de 2005 / 41

Programao PHP PHP 5

PHP OO
Introduo Classe - tipo de dado definido com atributos e mtodos Objeto - uma instncia de uma classe Atributo - dados de uma classe Mtodo - funes de uma classe Herana - extenso de uma classe

Vincius Costa de Souza - Julho de 2005 / 42

Programao PHP PHP 5

PHP OO
Classe Abrir Encerrar Depositar Sacar ConsultarSaldo
(Parte escondida)

Nome Saldo

Atributos

Mtodos (Protocolo de acesso)

Vincius Costa de Souza - Julho de 2005 / 43

Programao PHP PHP 5

PHP OO
Objetos

Abrir Encerrar Depositar Sacar ConsultarSaldo

Tio Patinhas

Abrir Encerrar Depositar Sacar ConsultarSaldo

Donald

100.000,00

1,00

Conta do Tio Patinhas

Conta do Donald
Vincius Costa de Souza - Julho de 2005 / 44

Programao PHP PHP 5

PHP OO
Classe Construtor

Mtodos

class ContaEmBanco { var nome,saldo; function ContaEmBanco($nome,$valor){ $this->nome = $nome; $this->saldo = $valor; } function depositar($valor){ $this->saldo += $valor; }

Instncia

} $conta1 = new ContaEmBanco(Donald,100); $conta1->depositar(500); $conta1->consultarSaldo(); Vincius Costa de Souza - Julho de 2005 / 45

function consultarSaldo(){ echo $this->saldo; } ...

Programao PHP PHP 5

PHP OO
Herana Classe ContaEmBanco
Abrir Encerrar Depositar Sacar ConsultarSaldo

Classe ContaPoupana
CalculaJuros Calcula os juros do ms

Classe ContaCheque
DescontaCheque Desconta do saldo um cheque passado
Vincius Costa de Souza - Julho de 2005 / 46

Programao PHP PHP 5

PHP OO
Sobrescrevendo mtodos
class ContaCheque extends ContaEmBanco { var num_cheques = 0; function ContaCheque($nome,$valor){ $this->nome = $nome; $this->saldo = $valor; }

} $contaCh = new ContaCheque(Pluto,100); $contaCh->consultarSaldo(); Vincius Costa de Souza - Julho de 2005 / 47

function consultarSaldo(){ echo $this->saldo; $this->saldo -= 0,40; } ...

Programao PHP PHP 5

PHP OO
PHP 5

Modelo OO (Zend 1) objetos copiados Novo modelo OO (Zend 2) referncias a objetos private, public, protected, abstract permite construtores e destrutores controle de duplicao set e get
Vincius Costa de Souza - Julho de 2005 / 48

Programao PHP PHP 5

PHP OO
PHP 5 objetos por referncia
class Conta { function setSaldo($value){ $this->saldo = $value; } function getSaldo(){ return $this->saldo; } } function zeraConta($obj){ $obj->setSaldo(0); } $object = new Conta(); $object->setSaldo(100); seraConta($object); echo $object->getSaldo();
Vincius Costa de Souza - Julho de 2005 / 49

Programao PHP PHP 5

PHP OO
PHP 5 referenciando objetos retornados
class Conta { function Conta($valor){ $this->saldo = $valor; } funciton getSaldo(){ return $this->saldo; } } function criarConta($valor){ return new Conta($valor); } PHP4: $conta1 = criarConta(250); echo $conta1->getSaldo(); PHP5: echo criarConta(250)->getSaldo();
Vincius Costa de Souza - Julho de 2005 / 50

Programao PHP PHP 5

PHP OO
PHP 5 construtores
class ClasseBase { function __construct() { print "No construtor da ClasseBase\n"; } } class SubClasse extends ClasseBase { function __construct() { parent::__construct(); print "No construtor da SubClasse\n"; } } $obj = new ClasseBase(); $obj = new SubClasse();
Vincius Costa de Souza - Julho de 2005 / 51

Programao PHP PHP 5

PHP OO
PHP 5 destrutores
class MinhaClasse { function __construct() { print "No construtor\n"; $this->name = "MinhaClasse"; } function __destruct() { print "Destruindo " . $this->name . "\n"; }

$obj = new MinhaClasse();

Vincius Costa de Souza - Julho de 2005 / 52

Programao PHP PHP 5

PHP OO
PHP 5 protected
class Conta { protected $saldo; } class ContaPoupanca extends Conta{ function getSaldo(){ return $this->saldo; } } $conta1 = new ContaPoupanca; echo $conta1->getSaldo(); echo $conta1->saldo; OK NO

Vincius Costa de Souza - Julho de 2005 / 53

Programao PHP PHP 5

PHP OO
PHP 5 get e set

class Conta { function __get($atributo){ return $this->members[$atributo]; } function __set($atributo,$valor){ $this->members[$atributo] = $valor; } }

Vincius Costa de Souza - Julho de 2005 / 54

Programao PHP PHP 5

PHP OO
PHP 5 abstract
abstract class Conta { //... } class ContaEspecial extends Conta{ //... } $conta1 = new Conta; $conta1 = new ContaEspecial; NO SIM

Vincius Costa de Souza - Julho de 2005 / 55

Programao PHP PHP 5

PHP OO
Exerccio Implementar atravs do paradigma OO uma conta bancria utilizando e testando os novos recursos do PHP5 Abrir Encerrar Depositar Sacar ConsultarSaldo

Nome Saldo

Vincius Costa de Souza - Julho de 2005 / 56

Programao PHP PHP 5

OBRIGADO!

Vincius Costa de Souza


viniciuscs@unisinos.br www.inf.unsinos.br/~vinicius

So Leopoldo, julho de 2005

Vincius Costa de Souza - Julho de 2005 / 57

Você também pode gostar