Este documento descreve um curso de introdução à programação web em PHP com 30 horas de duração. O curso aborda tópicos como scripting do lado do servidor e do cliente, técnicas de escrita de páginas dinâmicas, variáveis, estruturas de controle e introdução aos principais conceitos da linguagem PHP.
2. Introdução à programação Web em PHP
Scripting do lado do servidor e do lado do cliente
Técnicas básicas de escrita de páginas dinâmicas
Variáveis e estruturas de controlo de execução
2
3. Um script é um programa constituído por um conjunto
de instruções, escritas numa determinada linguagem e
dirigidas para uma aplicação que as executa e
interpreta.
O PHP é uma linguagem denominada de server-side,
enquanto que a linguagem JavaScript é chamada de
client-side.
O Apache é um Servidor HTTP que fornece páginas
HTML ou ficheiros aos browsers Web. Estas podem ser
estáticas ou geradas por um interpretador (ex: PHP)
3
4. Client-side (ex: JavaScript)
• O cliente desempenha a função de processamento.
• A função do servidor é somente fornecer os ficheiros
solicitados.
Cliente Servidor
Uma cópia do
documento HTML e com
possível código não
processado é enviada ao
cliente Contém o documento HTML
requisitado. Recebe a
solicitação feita pelo browser
O browser é responsável
por interpretar o possível
código JavaScript
4
5. Server-side (ex: PHP)
• O servidor desempenha a função de processamento.
Cliente Servidor
Um programa interpreta o
script (por ex: PHP) e
substitui o código pelo
resultado na página HTML.
Uma cópia do
documento HTML e com
possível código já
processado é enviada ao
cliente
5
O browser “vê” uma página
comum, que foi criada
instantaneamente no servidor
6. A linguagem PHP, surgiu com a designação - Personal
Home Pages (Rasmus Lerdorf-1995);
Actualmente, PHP surge com o significado de
Hypertext Preprocessor;
PHP é uma linguagem de programação de scripts para
serem interpretados no lado dos servidores;
O PHP é “incorporado” em documentos HTML;
6
7. O PHP permite a construção de páginas web com
conteúdos dinâmicos.
O facto do PHP ser uma das linguagens do lado do
servidor mais utilizadas na web deve-
se essencialmente a:
Ser uma tecnologia distribuída gratuitamente;
Ter uma excelente capacidade de articulação com:
• Servidores Web – Apache;
• Sistemas de gestão de base de dados – MYSQL.
7
8. Funções de correio electrónico - enviar um e-mail a
uma pessoa ou lista parametrizando vários aspectos (e-
mail de origem, assunto, pessoa a responder...).
Ex.: mail(), mb_send_mail, imap_mail
Gestão de bases de dados - interfaces para o acesso à
maioria das bases de dados.
Ex.: mysql_create_db, mysql_ field_ len, mysql_
field_ table,…
8
9. Gestão de ficheiros - criar, apagar, mover, modificar
ficheiros.
Ex.: zip_open, chdir, scandir, copy, file_exists, ...
Tratamento de Imagens – é possível uniformizar o
tamanho e o formato das imagens recebidas num site.
Ex.: getimagesize, imagecopy, imagecreate,…
Tratamento de cookies
Ex.: setcookie, http_build_cookie,…
9
10. O servidor HTTP (ex: Apache) reconhece a extensão da página
PHP e, antes de enviá-la ao browser, vai encarregar-se de a enviar
ao interpretador PHP que vai interpretar e executar tudo aquilo
que se encontre dentro das tags <?php Código PHP ?>.
O restante, vai enviá-lo tal qual, visto que assumirá que se trata de
código HTML compreensível para o browser.
10
11. As tags que indicam os scripts de PHP podem ser:
<?php comandos; ?>
<script language="php"> comandos </script>
<? comandos; ?>
<% comandos; %>
É o mais utilizado
Estes formatos necessitam de
estar activados nas definições de
configuração do PHP.
11
12. Uma instrução termina com ponto e vírgula (;);
A instrução echo apresenta a informação no ecrã;
Um bloco de instruções é incluído dentro de chavetas
{...};
Comentários de uma linha inserem-se depois do sinal:
# ou //
Comentários de várias linhas inserem-se entre os sinais:
/* e */
12
13. O script de PHP é embutido no código HTML e o
ficheiro gravado com a extensão .php;
O ficheiro é colocado na pasta c:xampphtdocs;
Para executar o programa em PHP numa máquina local,
basta digitar o endereço:
• http://localhost/nomedoficheiro.php
Ou
• http://127.0.0.1/nomedoficheiro.php
13
16. Variável é uma forma de guardar informações que
pode variar no decorrer da execução do script;
Os nomes das variáveis começam sempre com $;
O PHP é case sensitive, isto é, distingue
maiúsculas de minúsculas;
letras
Exemplo: As variáveis $nome, $Nome, $NOME
são diferentes;
16
17. O PHP não necessita da definição explicita do tipo na
declaração de variáveis:
O tipo de uma variável é determinado pelo contexto em
que esta é utilizada.
Exemplo:
• $var = “olá”; // Variável do tipo String
• $var = 1; // Variável do tipo Inteiro
17
18. O PHP suporta os seguintes tipos de dados:
• Boolean (verdadeiro ou falso)
• Integer
• Float (nº com vírgula flutuante, ou também double)
• String (conjunto de caracteres)
• Array
• Object (pode conter várias variáveis e funções)
• Null (correspondente a um valor nulo)
18
19. Função gettype()
Indica o tipo de dados que cada variável
assume.
Exemplo:
$x=5; echo gettype($x);
19
var_dump ($x);
21. Por vezes poderá haver necessidade de declarar variáveis
que necessitem de existir durante todo o código (variáveis
globais) ou apenas em certos momentos do código (variáveis
locais). Chama-se a esta propriedade scope.
Por defeito as variáveis são locais, pelo que não estão
acessíveis em todo o código.
Por exemplo, uma variável definida dentro de uma função só
existe dentro dessa função e uma variável definida fora de
uma função só existirá fora dela.
21
22. Exemplo 1:
<?php
$a=3;
function ver()
{
$b= $a+2;
echo $b;
}
ver(); //resulta o valor 2
echo “<br>”;
echo $a; //resulta o valor 3
echo “<br>”;
echo $b; // não imprime qualquer valor
?>
22
23. Notas do Exemplo 1:
23
O resultado deste exercício parece um pouco estranho. Se dentro
da função existe uma expressão $b=$a+2, deveria resultar $b=3+2,
logo o valor 5.
Contudo, isso não se verifica, já que a variável $a não é global, não
existindo dentro da função, tomando assim o valor nulo em vez do
valor 3.
Por outro lado, a variável $b só existe dentro da função, pelo que
fora dela toma o valor nulo não resultando qualquer impressão no
ecrã.
Para ser possível obter o valor 5, resultado da expressão $b=$a+2, é
necessário declarar a variável $a como global.
24. Exemplo 2:
<?php
$a=3;
function ver()
{
GLOBAL $a;
$b= $a+2;
echo $b;
}
ver(); //resulta o valor 5
echo “<br>”;
echo $a; //resulta o valor 3
echo “<br>”;
echo $b; // não imprime qualquer valor
?>
24
25. Notas do Exemplo 2:
25
Ao declararmos a variável $a como global dentro de uma função,
isto é, dentro de onde pretendemos aceder ao seu valor global,
conseguimos que ela tenha o valor anteriormente declarado que é 3.
No caso da variável $b, que foi impressa fora da função, continua a
não ter valor, pois só existe dentro da função.
26. As constantes funcionam de maneira semelhante
as
variáveis, só que o seu valor não pode ser alterado.
Função define()
Permite definir constantes.
Sintaxe:
define(CONSTANTE,valor)
As constantes não utilizam o carácter $ nem podem ser redefinidas.
Por convenção, as constantes definem-se por maiúsculas.
26
28. PROFESSORA: SUSETE ESTEVES 28
Aritméticos
Exemplo Nome Resultado
$a + $b Adição Soma de $a com $b
$a - $b Subtração Diferença entre $a e $b
$a * $b Multiplicação Produto de $a e $b
$a / $b Divisão Quociente de $a por $b
$a % $b Módulo Resto da divisão de $a por $b
29. PROFESSORA: SUSETE ESTEVES 29
Relacionais ou comparativos
Exemplo Nome Descrição
$a == $b Igual Verdadeiro (true) se $a é igual a $b
$a != $b Diferente Verdadeiro (true) se $a não é igual a $b
$a > $b Maior Verdadeiro se $a é maior que $b
$a >= $b Maior ou igual Verdadeiro se $a é maior ou igual a $b
$a < $b Menor Verdadeiro se $a é menor que $b
$a <= $b Menor ou igual Verdadeiro se $a é menor ou igual a $b
30. Incremento e decremento
PROFESSORA: SUSETE ESTEVES 30
Exemplo Nome Efeito
++ $a Pré-incremento Incrementa $a em um, e então retorna $a
-- $a Pré-decremento decrementa $a em um, e então retorna $a
$a ++ Pós-incremento Retorna $a, e então incrementa $a em um
$a -- Pós-decremento Retorna $a, e então decrementa $a em um
31. Lógicos
PROFESSORA: SUSETE ESTEVES 31
Exemplo Nome Resultado
$a && $b E - AND Verdadeiro se tanto $a quanto $b são verdadeiros
$a || $b OU - OR Verdadeiro se $a ou $b são verdadeiros
! $a NÃO - NOT Verdadeiro se $a não for verdadeiro
32. Operador de junção de strings
Exemplo:
• $nome = “Susete”;
• $sobrenome = “Esteves”;
• echo $nome.” ”.$sobrenome;
Insere um espaço
em branco
32
Operador Significado
. (ponto) Junção de strings
33. As estruturas de controlo que vamos estudar em PhP são
idênticas às utilizadas em C, C++ e JS. Começamos pelas
estruturas de decisão if-else e switch-case.
Estrutura de decisão if-else
(…)
if(condição)
{<bloco de instruções>;}
elseif (condição)
{<bloco de instruções>;}
else
{<bloco de instruções>;}
(…)
33
34. 34
condições impostas.
Como podemos verificar, a estrutura de controlo em PhP é
ligeiramente diferente da utilizada em JS, devido à condição
adicional elseif que lhe confere maior flexibilidade.
A estrutura de decisão if-else é utilizada quando
pretendemos executar ações distintas dependendo das
35. Exemplo: (if-else)
If ($x==0)
{echo “Número ” .$x;}
elseif ($x==1)
{echo “Número ” .$x;}
else
{echo “Número errado!” ;}
Neste exemplo testa-se o valor da variável $x.
No caso de ser 0 imprime no ecrã Número 0.
No caso de ser 1 imprime no ecrã Número 1.
Se $x for um valor diferente dos anteriores, a parte executada pelo
programa será else, imprimindo no ecrã Número errado.
35
36. Estrutura de seleção switch-case
(…)
switch (expressão) {
case valor 1: <bloco de instruções>; break;
case valor 2: <bloco de instruções>; break;
case valor N: <bloco de instruções>; break;
default: <bloco de instruções>; }
(…)
Esta estrutura pode ser utilizada nas mesmas circunstâncias da
anterior, embora seja mais indicada para situações onde existam
mais que duas opções. Desta forma, evitam-se encadeamentos
entre o ciclo if e o elseif, que geralmente tornam o código muito
confuso e com erros, quando mal estruturados.
36
37. Exemplo: (switch-case)
switch ($x) {
case 25: echo “Idade=“ .$x; break;
case 29: echo “Idade=“ .$x; break;
case 30: echo “Idade=“ .$x; break;
case 34: echo “Idade=“ .$x; break;
default: echo “Idade não definida!”;
}
Como verificamos no código, apesar de conter várias opções de
decisão, mantém-se percetível e bem estruturado. É de realçar
também a facilidade com que se acrescenta, se necessário, outras
opções a esta estrutura.
37
38. Os ciclos servem para repetirmos um pedaço de código
um certo número de vezes.
Ciclo for
(…)
for (inicialização; condição; incremento)
{
<bloco de instruções>;
}
(…)
38
39. Exemplo: (for)
(…)
for ($i=1; $i<=16; $i++)
{
echo “Número” .$i.“<br>”;
}
(…)
Neste exemplo, será executado um ciclo 16 vezes desde $i=1 até
$i=16 com incrementos de uma unidade $i++ por iteração.
No final da execução do ciclo for serão impressos todos
os números de 1 a 16 precedidos da palavra Número.
A impressão será realizada por linha visto existir o código HTML
<br> que força a passagem de linha por cada iteração.
39
40. Ciclos while e do-while
São idênticos ao ciclo for mas não têm contadores (incremento).
Apenas se repetem enquanto se verificar a condição.
A grande diferença entre os ciclos while e do-while é que o
segundo executa sempre pelo menos uma vez o bloco de
instruções, já que a condição de paragem se situa no final e não no
início como no ciclo while.
(…)
while (condição)
{ <bloco de instruções>; }
(…)
(…)
do
{ <bloco de instruções>; }
while (condição);
(…)
40
41. Exemplo: (while)
(…)
$i=1; // Necessário atribuir valor inicial à variável fora do ciclo
while ($i<=16)
{
echo “Número=“ .$i. “<br>” ;
41
$i++; /* Necessário incrementar valor da variável no final de cada
iteração */
}
(…)
42. Exemplo: (do-while)
(…)
$i=1; // Necessário atribuir valor inicial à variável fora do ciclo
do {
echo “Número=“ .$i.“<br>” ;
42
$i++; /* Necessário incrementar valor da variável no final de cada
iteração */
}
while ($i<=16);
(…)
43. Exemplos: (while e do-while)
43
Como se pode verificar através destes ciclos é possível obter o
mesmo resultado que o apresentado com o ciclo for. Contudo,
neste caso temos necessidade de declarar a variável $i fora do
ciclo para a iniciarmos com o valor 1, que será o primeiro número a
imprimir.
Dentro do ciclo somos de novo obrigados, após a instrução de
impressão, a incrementar o valor $i++ ou seria impresso
infinitamente o valor 1.
Apesar de, neste caso, o exercício ser mais simples com o ciclo for
não quer dizer que apenas devemos usar este último.
Deverá sempre analisar o seu código e escolher o que se ajustar
melhor ao problema.
44. As funções em PhP são semelhantes às apresentadas em
JS.
44
São definidas pela palavra function podendo, receber
ou não parâmetros, bem como, retornar ou não valores.
A estrutura de uma função apresenta-se da seguinte forma:
(…)
function nome_função($parâmetro1, $parâmetro2, …)
{
<bloco de instruções>; return
[$valor ou expressão];
}
(…)
45. As funções permitem que os códigos fiquem mais percetíveis e
menos confusos.
Além disso, deixa de haver necessidade de repetir um certo
pedaço de código ao longo do programa.
Em vez de repetirmos o código substituímo-lo por uma função.
O código pretendido fica dentro da função sendo esta chamada
sempre que necessário, ao programa.
45
46. Exemplo 1: Função sem parâmetros
(…)
function alerta()
{
echo “Dados incorretos!”;
}
(…)
Como já referimos os parâmetros não são obrigatórios.
Quando uma função não utiliza parâmetros, o conteúdo dos
parênteses fica em branco. Ex: função alerta() anterior.
46
47. Exemplo 2: Função que recebe parâmetros
(…)
function soma($valor1, $valor2)
{
$soma_val = $valor1 + $valor2;
return $soma_val;
}
(…)
A função anterior recebe dois parâmetros, isto é, dois valores que
irá somar.
O resultado dessa soma será guardado na variável $soma_val que
será retornado para o ponto do código onde a função foi chamada.
47
48. Exemplo 1:
<?php
define (“A”, 3);
define (“NOME”, “Maria”);
function ver() {
$b= A+2;
echo $b;
}
ver(); //resulta o valor 5
echo “<br>”;
echo A; //imprime o valor 3
echo “<br>”;
echo NOME; // imprime Maria
?>
Nota: Ao contrário das variáveis, as constantes estão definidas para
todo o código, não existindo o conceito de constantes globais e locais.
48
49. A linguagem PhP é do tipo de programação orientada ao objeto.
Quer isto dizer que nesta linguagem existem um conjunto de
objetos que trocam mensagens entre si.
Imagine um objeto de nome carro. Sabemos que este objeto é na
realidade a palavra que define um conjunto de 4 rodas, volante
assentos, motor, etc.. Contudo quando viajamos de carro não temos
de pensar em todos os seus componentes para o utilizar.
Na programação o processo é o mesmo. Temos objetos constituídos
por vários atributos mas que se definem por uma só palavra
tornando-se mais simples para quem os usa.
49
50. Os arrays em PhP são idênticos aos utilizados em C e C++. Um
array é um estrutura de dados que pode ser comparada a um
armário com gavetas “infinitas”. As gavetas simbolizam as posições
de um array.
Em cada gaveta podemos colocar objetos diferentes. Por exemplo,
na primeira colocamos folhas, na segunda parafusos, na terceira
cabos de rede e assim por diante. Sempre que abrirmos uma
gaveta, apenas nos será mostrado o interior dessa gaveta.
Com os arrays a história é a mesma. Podemos colocar números
inteiros na primeira posição do array, texto na segunda, números
decimais na terceira, etc.. Para acedermos ao conteúdo de uma
posição do array, será suficiente saber qual a sua identificação
numérica.
50
51. Criar um array
$nome_do_array = array (conteudo_pos0, conteudo_pos1,
conteudo_pos2, …, conteudo_posN);
Um array pode misturar no seu conteúdo strings, inteiros, floats, etc.
Exemplo 1: (correto)
<?php //array com três posições preenchidas
$a=array(10,20,30);
echo $a[0]; //imprime o conteúdo da posição zero do array, ou seja, o nº 10
echo $a[1]; //imprime o conteúdo da posição um do array, ou seja, o nº 20
echo $a[2]; //imprime o conteúdo da posição dois do array, ou seja, o nº 30
?>
51
52. Exemplo 1: (errado)
<?php //array com três posições preenchidas
$a=array(10,20,30);
echo $a; //irá aparecer no ecrã a palavra array
?>
Este erro é muito comum. Ao imprimir um array não é possível
fazê-lo através da instrução echo $a. Como vimos anteriormente
um array é um armário com gavetas.
A instrução deste exemplo diz para imprimir $a, isto é, o armário e
não as gavetas daí aparecer array escrito no ecrã. Para acedermos
ao conteúdo de um array (às gavetas) é necessário indicar as
posições.
52
53. Exemplo 2:
<?php //array com 3 posições preenchidas
$a=array(10,”Joana”,3.5);
echo $a[0]; //imprime o conteúdo da posição zero do array, ou seja, o nº 10
echo $a[1]; //imprime o conteúdo da posição um do array, ou seja, Joana echo
$a[2]; //imprime o conteúdo da posição dois do array, ou seja, o nº 3.5
?>
Para acrescentar um valor ao array anterior, é necessário adicionar a
seguinte linha de código:
$a[]=600;
Na posição $a[3] consta agora o valor 600.
53
54. Exemplo 3:
54
Imagine agora um array com 1000 posições preenchidas. Como
imprimir tudo no ecrã?
É necessário fazer echo de cada uma das posições 1000 vezes? A
resposta é claramente não.
Podemos utilizar um ciclo for para procedermos à impressão de
todo o array, poupando tempo, trabalho e apresentando uma
programação mais simplificada.
55. Exemplo 3: (cont.)
(…)
for ($i=0; $i<1000; $i++) //contador
echo $a[$i]; //imprime todo o conteúdo do array (1000 posições)
(…)
Este ciclo permite imprimir o conteúdo de um array com 1000
posições.
Nestes casos é habitual chamar o ciclo for de contador. Esse
contador ($i) será colocado dentro dos parênteses retos $a[$i].
Desta forma, o valor dentro de parênteses irá variar entre 0 e 999,
ou seja, as 1000 posições do array, imprimindo cada uma delas no
ecrã.
55
56. Por vezes, não se sabe o tamanho de um array. Em vez de um valor
fixo, os arrays podem ser variáveis.
Estas situações ocorrem várias vezes quando um array é
preenchido com informação proveniente de uma base de dados.
Por exemplo, a turma 11º D conta com 18 alunos este ano, porém
para o ano esse número poderá ser de 17, 20 ou outro qualquer.
Nos casos anteriores, seria necessário mudar o contador para parar
não em 18, mas em 17 ou 20.
56
57. O processo deixaria de ser dinâmico e pouco automatizado.
Para resolver este problema existe o ciclo foreach, que apenas
pode ser aplicado a arrays.
O ciclo percorre todas as posições ocupadas do array, imprimindo
por cada iteração, o seu conteúdo.
O ciclo para quando não existirem mais posições preenchidas com
informação no array.
57
58. Ciclo Foreach
foreach($nome_do_array_existente as $nome_escolhido)
Exemplo: (substitui o ciclo for)
<?php
$a=array(11, 12, 13, 14, 15);
foreach ($a as $valor)
{ echo $nome_escolhido; } //imprime todo o conteúdo do array?>
Neste exemplo, o array $a de 5 posições foi mapeado, isto é,
copiado para $valor. Cada uma das posições, depois de copiada, é
posteriormente impressa através da instrução echo $valor;
58
59. Os arrays associativos em vez de utilizarem
identificadores
numéricos para o acesso às posições do array, utilizam
nomes.
59
Vamos fazer novamente a analogia com o armário de gavetas.
Neste caso, cada gaveta passa a ter uma etiqueta da parte de fora,
tornando-se mais fácil identificar o que se encontra dentro. Este
tipo de arrays associam uma chave a um valor:
$chave =>$valor
Criar um array associativo:
$nome_do_array_associativo =
array(“nome_identificador_da_pos0” => conteudo_pos0,
”nome_identificador_da_pos1” => conteudo_pos1, …,
“nome_identifcador_da_posN” => conteudo_posN);
60. Exemplo 1: (imprimir o conteúdo de uma posição do array)
<?php
$a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19); /* array
associativo com 3 posições preenchidas */
echo “O Joaquim tem ” .$a[“Joaquim”]. ” anos. ” ; /* imprime O
Joaquim tem 19 anos */
?>
Neste exemplo apenas foi impresso no ecrã o conteúdo da posição
do array com o nome Joaquim $a[“Joaquim”], isto é, 19.
60
61. Exemplo 2: (imprimir todo o array)
echo “Nome: “ .$nome. “ Idade: “ .$idade. “<br>”; /* imprime todo
o conteúdo do array */
?>
Para imprimirmos todo o array,
Utilizamos um ciclo foreach.
<?php
$a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19);
associativo com 3 posições preenchidas */
foreach($a as $nome => $idade)
/* array
61
62. Exemplo 3: (acrescentar um valor ao array)
echo “Nome: “ .$nome. “ Idade: “ .$idade. “<br>”; /* imprime todo o
conteúdo do array */
?>
Neste exemplo acrescentámos:
$a[“Hugo”]=18;
Esta nova linha é acrescentada antes
do ciclo foreach para poder ser impressa.
<?php
$a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19);
associativo com 3 posições preenchidas */
$a[“Hugo”]=18;
foreach($a as $nome => $idade)
/* array
62
63. Exemplo 4: (errado)
<?php
$a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19); /*array
associativo com 3 posições preenchidas */
foreach($a as $nome)
echo “Nome:“ .$nome.“<br>”; // imprime todas as idades do array
?>
Neste caso, apenas são impressas as idades
no ecrã e não os nomes.
É necessário o operador => para completar o
acesso ao array associativo.
63
64. Exemplo 5: (errado)
<?php
$a=array(“Maria”=>17, “Carlos”=>15, “Joaquim”=>19); /*array
associativo com 3 posições preenchidas */
for($i=0; $i<2; $i++) // contador
echo $a[$i];
?>
Um array associativo não pode ser acedido através de posições numéricas
como $a[0]. A primeira posição do array só pode ser acedida por
$a[“Maria”], a segunda por $a[“Carlos”] e assim sucessivamente.
Concluindo, um ciclo for nunca deverá ser usado para aceder
ao conteúdo de um array associativo.
64