You are on page 1of 74

Instituto Federal de Educao, Cincia e Tecnologia IFAL

Coordenadoria de Informtica

Introduo PHP
por
Prof. MSc. Ricardo Rubens
Ricardo (arroba) ifal.edu.br

O que PHP?

PHP PHP: Hypertext Preprocessor


1994 (Rasmus Lerdorf)

Linguagem Script para criar sites dinmicos


executado no lado do servidor (Server
Side)
O programa no exposto ao cliente;
Portvel
Open Source
PHP x Outras linguagens
CGI, JavaScript, HTML, jsp, asp e coldfusion
2

fonte: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Fonte: http://www.php.net/usage.php

Agenda

PHP em HTML
Variveis em
formulrios
Identificadores
Variveis declaradas
pelo Usurio
Tipos de variveis
Estruturas de iterao

Atribuio
Constantes
Operadores e
Precedncia
Expresses
Funes de variveis
Estruturas de deciso

Ambiente de Desenvolvimento

Instalao
Xamplite - http://www.apachefriends.org/
Servidor Apache
Servidor MySQL

Aptana / Netbeans / Eclipse


IDE

10

Documentao

Manual
http://www.php.net/manual/pt_BR/index.php

PHP e MySQL Desenvolvimento Web (Luke


Welling, 3ed)

11

Um Programa PHP (1)

HTML

Marcaes PHP
<?php echo '<p>FPIN</p>'; ?>
<? echo '<p>FPIN</p>'; ?>
<script language:'php'> echo '<p>FPIN</p>'; </script>

Instrues PHP
echo '<p>FPIN</p>';
12

Um Programa PHP (2)

Espaos em branco

Comentrios
Mltiplas linhas
/* meu
comentrio */

Uma linha
echo 'fpin'; //comentrio 2
echo 'fpin'; #comentrio 3

13

Exerccio resolvido 1

Faa um programa PHP que, dados os


nmeros 10 e 20, mostra o maior deles.
<p> meu programa PHP </p>
<?
echo "maior entre 10 e 20: ";
$num1 = 10; $num2 = 20;
if ($num1 > $num2)
echo $num1;
else
echo $num2;
?>
ER101.PHP

E se eu precisasse fazer isso 10 vezes?

14

Problemas

Como calcular o maior entre 3 nmeros?


Como calcular a soma dos quadrados de 2
nmeros?
Como verificar se 3 nmeros so iguais?
Como facilitar a insero de cdigo HTML?

Funes...

15

Exerccio Resolvido 2

Faa uma funo em php para retornar o


maior de dois nmeros
<?php
echo "maior entre 10 e 20: ";
$num1 = 10; $num2 = 20;
echo maiorDe2($num1, $num2)."<br/>";
echo "> (20 e 30) = ".maiorDe2(20, 30)."<br>";
echo "> (200 e 100) = ".maiorDe2(200, 100)."<br>";
function maiorDe2( $num1, $num2){
if ($num1 > $num2)
return $num1;
else
return $num2;
}
echo "> (20 e 100) = ".maiorDe2(20, 100)."<br>";
?>

ER102.PHP

16

Exerccio Resolvido 3:
Bob's Auto Peas

Problema
Faa um programa em PHP para permitir o
pedido online de peas (pneus, leo, vela de
ignio, etc)

Planejamento da soluo
Definir Pginas
Pgina inicial
Pgina com formulrio de pedido
Pgina com resposta ao usurio

17

Exerccio Resolvido 3:
Bob's Auto Peas

Planejamento da soluo
Comece com HTML das pginas
Planeje o formulrio
Acrescente cdigo PHP, quando necessrio

Formulrio de envio
Action: processa.php
Method: post
Nome dos campos
Boto submit
18

Variveis

Iniciadas por $ e seguido por letras ou _


No preciso declarar o tipo de um varivel
(dinmico)
Em formulrios
$qtdPneus
// short style
$_POST['qtdPneus'] // medium style (comum)
$HTTP_POST_VARS['qtdPneus'] // long style

Arrays com variveis (superglobal)


$_POST
$_GET
$_REQUEST
19

Contedo dinmico
<?php
echo '<p>Processado em ';
echo date('H:i - d/m/y');
echo '</p>';
?>
data: date(string data)
Concatenao: echo "<p>Processado
".date('H:i - d/m/y ')."</p>";

em

20

Exerccio 01

Peso ideal: Escreva um programa em PHP


para calcular/mostrar o peso ideal de uma
pessoa.
Entrada: altura (m) e o sexo (m ou f)
Sada: peso supostamente ideal para essa
pessoa
Tabela:
Homens
(72,7 * altura) 58

Mulheres
(62,1 * altura) 44,7

Regra e padro de respostas para os exerccios no final do slide

21

Tipos
Os

tipos disponveis so:

Bsicos
Boolean;
Integer;
Float (ou tambm
double);
String;

Compostos

Especiais
Resource;
Null;

Pseudo-tipos
Mixed;
Number;
Callback;

Array;
Object;

22

Verificando o tipo
Funo var_dump: imprime o tipo de uma var e seu valor
void var_dump ( mixed expression [, mixed expression [, ...]] )

<pre> <?php
$a = 8;
$b = 3.1;
$c = false;
$d = 'oi';
$e = "ola!";
$f = 2 == 2;
var_dump($a,$b,$c);
var_dump($d,$e,$f);
?> </pre>
EX101.PHP

Resultado?

int(8)
float(3.1)
bool(false)
string(2) "oi"
string(4) "ola!"
bool(true)

23

Outras funes para tipo

string gettype ( mixed var ) Retorna o tipo


bool settype ( mixed var, string type )
is_type Informa se do tipo desejado
bool is_int ( mixed var )
is_array
is_bool
Etc.

24

Boolean

Expressa um valor lgico atravs de TRUE


ou FALSE.

Convertendo para boolean


Pode-se utilizar o casting, mas na maioria dos
casos isso feito automaticamente.

25

Boolean

Valores considerados FALSE:

o prprio booleano FALSE


o inteiro 0 (zero)
o ponto flutuante 0.0 (zero)
uma string vazia e a string "0"
um array sem elementos
um objeto sem elementos membros
o tipo especial NULL (incluindo variveis no definidas)

Valores considerados TRUE:


os demais
26

Boolean
Resultado?
<pre>
<?php
$a = 8;
$b = $a;
$c = (boolean) $a;
if ($a)
echo "estou no then \n";
var_dump($a, $b, $c);
echo gettype((bool)
echo gettype((bool)
echo gettype((bool)
echo gettype((bool)
echo gettype((bool)
echo gettype((bool)
echo gettype((bool)
?>
</pre>

"")."<br>";
1)."<br>";
-2)."<br>";
"foo")."<br>";
2.3e5)."<br>";
array(12))."<br>";
array())."<br>";

EX102.PHP

estou no
then int(8)
int(8)
bool(true)
boolean
boolean
boolean
boolean
boolean
boolean
boolean
27

Integer
$i = 1234; # inteiro positivo na base decimal
$i = -234; # inteiro negativo na base decimal
$i = 0234; # inteiro na base octal
# (simbolizado pelo 0)
# equivale a 156 decimal
$i = 0x34; # inteiro na base hexadecimal
#(simbolizado
# pelo 0x) equivale a 52 decimal.
Valor mximo depende da plataforma (considera
sinal), mas em geral 32 bits.
28

Integer

Overflow

<?php

Sada ??

$numero_grande=2147483647;
var_dump($numero_grande);
$numero_grande=2147483648;
var_dump($numero_grande);

saida: int(2147483647)
saida: float(2147483648)

?>
EX103.PHP

Convertendo
Casting com (int) ou (integer)

29

Ponto Flutuante

$a = 1.234;
$b = 1.2e3; #equivale a 1200
$c = 7E-10; #equivale a 0.0000007

Qual o resultado de echo (int) ( (0.1+0.7) * 10 );


EX104.PHP
imprime 7!

30

Strings

Pode-se utilizar:
Aspas simples: 'O texto exato $entre as aspas.'
Exemplos
<?php
$teste = "Brasil";
$php = '---$teste--\n';
echo "$php";
?>

Resultado: ---$teste--\n
EX105.PHP
31

Strings

Pode-se utilizar:
aspas duplas: "Expande as variveis ou
caracteres de escape."
Exemplos
<?php
$test = "Brasil";
$php = "---$teste---\n";
echo "$php";
?>

Resultado: ---Brasil--EX106.PHP
32

Exerccio Resolvido:
Acesso e Modificao
Qual o resultado da execuo deste cdigo ?
<?php
// Pega o primeiro caractere da string
$str = 'Isto um teste.';
$um = $str{0};
// Pega o terceiro caractere da string
$tres = $str{2};

// Pega o ltimo caractere da string


$str = 'Isto ainda um teste.';
$ultimo = $str{strlen($str)-1};
// Modifica o ltimo caractere da string
$str = 'Olhe o mal';
$str{strlen($str)-1} = 'r';
?>

ER107.PHP
33

Funes e Operadores

int strlen (String) : tamanho da String


ltrim, rtrim : apaga espaos em branco
(string) : coero

Operadores
.

Concatenao

.=

Atribuio e
Concatenao

<?php
$a = "Ol ";
$b = $a . "mundo!"; // agora $b contm "Ol
mundo!"
$a = "Ol ";
$a .= "mundo!";
mundo!"
?>

// agora $a contm "Ol

34

Caracteres
Sintaxe

Resultado

\n

Nova linha

\t

Tabulao

\$

O smbolo $

\'

Aspa simples

\"

Aspa dupla

\\

O smbolo \

35

Operadores
Atribuio

Aritmticos
+

Adio

atribuio simples

Subtrao

+=

atribuio com adio

Multiplicao

-=

Atribuio com subtrao

Diviso

*=

Resto da diviso

Atribuio com
multiplicao

/=

Atribuio com diviso

%=

Atribuio com resto da


diviso

.=

Atribuio com
concatenao

36

Incrementos

Incrementos
++

Incremento

--

Decremento

37

Exemplos
Resultado ?
<?php

$b = $a = 5;
$c = $a++;

Atribui o valor 5 s variveis $a e $b.


Atribui o valor original de $a(5) para $
c.

$e = $d = ++$b;

Atribui o valor incrementado de


$b (6) a $d e $e.

$f = $e += 10;

Primeiro, $e incrementado de 10 e
termina com ovalor 16. O valor da atribu
io (16) ento atribudo a $f, e $f te
rmina com o valor 16 tambm.

?>

EX107.php

38

Operadores Lgicos
bit a bit
&

E (AND)

OU (OR)

OU EXCLUSIVO (XOR)

NO (NOT)

<<

Shift left

>>

Shift right

Qual a diferena entre estes operadores?

Lgicos
And E lgico
Or

OU lgico

Xor

OU EXCLUSIVO

NO (NOT)

&&

E lgico

||

Ou lgico

39

Comparaes
==

Igual

Iguais

=== Idntico

Iguais e do mesmo tipo

!=

Diferente

Diferentes

<>

Diferente

Diferentes

!==

No idntico

Diferentes ou no so do mesmo
tipo

<

Menor que

>

Maior que

<=

Menor igual

>=

Maior igual

40

Operador ternrio
(expresso 1) ? (expresso 2) : (expresso 3)
Funciona como um if... Exemplo:
if (expresso 1)
expresso 2;
else
expresso 3;

Exemplo
$x = (1==2) ?10 : 100; //Qual o valor de $x ? 100...

Reescreva a resposta do exerccio 01 utilizando operador


ternrio!
41

Controle de erro

Operador: @
Ao utilizar o operador "@", qualquer
mensagem de erro que venha a acontecer
ser ignorada.
Exemplo:
<?php
$i = 2/0;
$i = @2/0;
$i = @(2/0);
?>

EX108.PHP
42

Operadores de execuo

Operadores: ``
Qualquer comando entre esses operadores
vai ser executado pelo SO e retornado;
Exemplo:
<?php
$R = `dir c:\\windows\\system32`;
echo "<PRE> $R </PRE>";
?>
EX109.PHP
43

Ordem de precedncia
new
[
! ~ ++ -- (int) (float) (string) (array)
(object) @
* / %
+ - .
<< >>
< <= > >=
== != === !==
&
^
|
&&
||
? :
= += -= *= /= .= %= &= |= ^= <<= >>=
print
and
xor
or

44

Variveis pr-definidas do PHP

$GLOBALS : referncia para todas as variveis globais


disponveis.
$_SERVER: variveis criadas pelo servidor.
$_GET: variveis enviadas via mtodo get.
$_POST: variveis enviadas via mtodo post.
$_COCKIE: variveis enviadas via cockies http.
$_FILES: variveis enviadas via transferncia de arquivos
HTTP.
$_ENV: variveis do ambiente de execuo.
$_REQUEST: variveis enviadas via get, post ou cockie.
$_SESSION: variveis registradas na sesso do script.
45

Escopo de variveis

A maior parte das variveis est disponvel


no contexto local.
Elas tambm ficam disponveis nos arquivos
includos.
<?php
$b=2;
include ('ex110b.php');
echo $a.'<br/>';
?>
EX110.PHP

46

Escopo Local

Variveis definidas no escopo global no


esto automaticamente disponveis no
escopo local.
<?php
$a=1; //escopo global
function Teste()
{ //escopo local
echo $a;
}
Teste();
?>
EX111.PHP
47

Utilizando variveis globais


localmente

Utilize global ou $GLOBALS


<?php
$a = 1;
$b = 2;
function Soma()
{
global $a, $b;
$b = $a + $GLOBALS['b'];
echo $b;
}
Soma();
echo $b;
?>
EX112.PHP

48

Variveis estticas

So locais, mas a varivel no perde seu


valor quando o programa deixa o escopo.
No podem ser atribudas expresses a elas.
QUAL O RESULTADO DA EXECUO DESTES CDIGOS?
<?php
function Teste ()
{
$a = 0;
echo $a;
$a++;
}
Teste();
Teste();
?>

EX113a.PHP

<?php
function Teste()
{
static $a = 0;
echo $a;
$a++;
}
Teste()
Teste();
?>

EX113b.PHP

49

Constantes

O nome tem as mesmas regras dos


identificadores.
Sintaxe: define("MINHA_CONST","valor");
Somente para dados escalares.

50

Constantes Mgicas

__LINE__
__FILE__
__FUNCTION__
__CLASS__
__METHOD__

51

Superglobais

$GLOBALS
$_SERVER
$_GET
$_POST
$_COOKIE
$_FILES
$_ENV
$_REQUEST
$_SESSION
52

if

Sintaxe
Notem a diferena de sintaxe
Sintaxe alternativa
<?php
$a = 0; $b = 1;
if ($a > $b){
echo "maior"
}elseif($a == $b){
echo "iguais";
}else{
echo "menor";
}
?>
EX114a.PHP

<?php
$a = 0; $b = 1;
if ($a > $b):
echo "maior"
elseif($a == $b):
echo "iguais";
else:
echo "menor";
endif;
?>

EX114b.PHP

53

while

Sintaxe
Notem a diferena de sintaxe
Qual o resultado da execuo dos 2 cdigos?
Iguais ?
<?
$i=0;
while ($i < 10){
echo ++$i;
echo "<br>";
}
?>
EX115a.PHP

Sintaxe alternativa

<?
$i=0;
while ($i < 10):
echo $i++;
echo "<br>";
endwhile;
?>
EX115b.PHP
54

do..while

Sintaxe
Sem sintaxe alternativa
<?php
$i=0;
do{
echo ++$i;
echo "<br>";
} while ($i < 10);
?>
EX116a.PHP

55

for

Sintaxe
for (declaracoes; condicao ; incremento){
Comandos;
}

<?php
for($i=0; $i<10;i++){
echo $i;
}
?>
EX117a.PHP

<?php
for($i=0; $i<10;i++):
echo $i;
endfor;
?>
EX117b.PHP
56

switch
<?php
$i=0;
if ($i == 0 || $i==-1) {
echo "i igual a 0";
} elseif ($i == 1) {
echo "i igual a 1";
} elseif ($i == 2) {
echo "i igual a 2";
}
?>
EX118.PHP

$i=0;
<?
switch ($i) {
case -1:
case 0:
echo "i igual a 0";
break;
case 1:
echo "i igual a 1";
break;
case 2:
echo "i igual a 2";
break;
}
?>
EX118.PHP
57

return

Utilizado para terminar uma funo (ou


mtodo) e retornar um valor especfico.

Tambm pode ser utilizado no escopo global


do script para termin-lo.

58

Reaproveitar cdigo

Como lidar com os seguintes problemas:


Cdigo muito grande?
Mesmo cdigo em mais de uma pgina
(programa) PHP ?
Utilizar cdigo criado por outras pessoas?

59

Require

Pe todo o contedo de um outro arquivo no


arquivo corrente.
Idntica ao include, mas este no gera
mensagens de erro.
Se houve algum problema, a execuo
interrompida: Fatal Error
O arquivo includo antes de ser executado.
Sintaxe: Require("nomedoarquivo");

60

Require once

No gera mensagens de erros se o arquivo j


foi includo.

61

Include

Semelhante ao require.
O cdigo includo em tempo de execuo.
Utilizados para criar funes cujo cdigo
includa em mltiplas pginas.
Ex.: um cabealho.

Qualquer problema que ocorrer, um warning


gerado, mas continua executando.

62

Include once

Igual ao Require Once, considerando as


diferenas entre require e include.

63

Exemplos: require, include


$arqs = array('a1.inc','a2.inc','a3.inc');
$arquivo1 = 'a4.inc';
$arquivo2 = 'a5.inc';
for ($i=0;$i<count($arqs); $i++){
include($arqs[$i]);
}
if ($x == $y){
include($arquivo1);
}
else{
include($arquivo2);
}

EX119.PHP

64

Funes

Argumentos de Funes

Por padro, os argumentos so passados por


valor
<?php
function takes_array($input)
{
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
$a[0] = '10';$a[1] = '55';
takes_array($a);
?>
EX120.PHP

66

Argumentos de Funes

Se voc deseja permitir que uma funo


modifique seus argumentos, voc precisa
pass-los por referncia
<?php
function add_some_extra(&$string)
{
$string .= ' e alguma coisa mais.';
}
$str = 'Isto uma string,';
add_some_extra($str); //add_some_extra(&$str);
echo $str;
// imprime 'Isto uma string, e alguma
coisa mais.'
?>
EX121.PHP
67

Valores Padro
<?php
function cafeteira ($tipo = "cappuccino")
{
return "Fazendo uma xcara de caf $tipo.\n";
}
echo cafeteira ();
echo cafeteira (null);
echo cafeteira ("expresso");
?>
EX122.PHP
Fazendo uma xcara de caf cappucino.
Fazendo uma xcara de .
Fazendo uma xcara de caf expresso.
68

Retornando Valores

function soma($a, $b){


return $a + $b;
}

echo soma(3,5);

69

Exerccio Resolvido

Escreva um programa PHP que, informados


um intervalo de altura, o programa imprime
uma tabela de pesos ideais neste intervalo
com variao de 1 cm.
Altura Homem Mulher
170
A
D
171
B
E
172
c
F

70

Exerccio 02
1.

Escreva um formulrio em uma pgina


HTML de forma que o usurio possa
informar os lados de um tringulo. A
aplicao PHP deve ento mostrar diversas
informaes sobre o tringulo: se os lados
formam um tringulo, o tipo do tringulo, os
lados, identificar a hipotenusa (se existir), o
permetro, a rea e uma imagem
correspondendo ao tipo do tringulo. (utilize
funes para cada conjunto de dados)
Regra e padro de respostas para os exerccios no final do slide

71

Exerccio 03
1.

Escreva um programa PHP que permita ao


usurio relacionar as cores com suas
representaes no RGB. Assim, o programa
deve receber do usurio dois dos trs
valores para formar uma cor, e o programa
deve imprimir uma tabela com as variaes
de cor para o terceiro valor no informado.

Regra e padro de respostas para os exerccios no final do slide

72

Exerccio 04

Faa uma aplicao que objetiva fazer uma


pesquisa de opinio com o usurio. Crie 7 pergunta,
utilizando os diversos recursos de formulrios
HTML, mas s permita o usurio responder um
pergunta por vez, enviando assim as resposta para
o servidor. No Final da pesquisa, mostre todas as
respostas ao usurio.
Dica: use o input hidden dos formulrios HTML para
guardar no prprio HTML as respostas do usurio,
pois no estudamos cookies, sesses ou banco de
dados.
73

Exerccio 05

Defina dois estilos diferentes para uma


mesma pgina (cores, fonte, fundo, etc.).
Depois, faa uma aplicao que permite o
usurio qual a melhor configurao de estilo
para a pgina.

74

Exerccio 06

Faa um programa que o usurio informa um


nmero qualquer e a aplicao escreve este
nmero por extenso.

75

Exerccio 07

Escreva uma aplicao PHP para


demonstrar:
a diferena de variveis locais e globais, assim
como a utilizao de variveis globais em
funes.
variveis estticas
variveis globais
as constantes mgicas
diferenas entre require, include, require_once e
include_once
76

Regras e padres para respostas dos exerccios

Identificao do arquivo
Use um padro para identificar os arquivos.
Ex>: exer_<numero-exerc>_<arquiv>_<autor>.xxx
<numero_exerc>: numero do exerccio no slide
<arquiv>: nome/tipo do arquivo
Index: arquivo com interface html que permite a execuo do
exercicio
Processa: primeiro arquivo php chamado a partir do index
Teste: arquivo que permite executar vrios testes sobre o
exerccio
Outros: se precisar de mais arquivos, use nomes que identifiquem
os arquivos

<autor>: seu nome


77

Regras e padres para respostas dos exerccios

Identificao do aluno
Coloque um cabealho (comentrio) com
identificao do autor do exerccio em cada
arquivo

Identificao do problema
Copie e cole o texto que identifica o problema
como comentrio no arquivo de exerccio

Testes
Crie um arquivo que realiza vrios testes e
mostra o resultado na tela, caso necessrio.
78

You might also like