PHP é uma das lin­gua­gens de pro­gra­ma­ção mais comuns para pro­gra­ma­ção no lado do servidor. Com o tempo, ele se tornou parte in­te­grante dos sites con­tem­po­râ­neos e das tec­no­lo­gias da Internet. No entanto, dominar o PHP pode ser difícil para os novatos. Neste tutorial de PHP, mos­tra­re­mos os conceitos básicos da popular linguagem de pro­gra­ma­ção e seus mais im­por­tan­tes ope­ra­do­res, loops e funções.

O que você precisa ter antes de iniciar o tutorial de PHP

Nosso tutorial é voltado prin­ci­pal­mente para ini­ci­an­tes. No entanto, ter um co­nhe­ci­mento básico de de­sen­vol­vi­mento moderno da Web e HTML pode ser útil. Para acom­pa­nhar e re­pro­du­zir os exemplos em seu próprio com­pu­ta­dor, cer­ti­fi­que-se de ter preparado o seguinte:

  • Servidor da Web, incluindo In­ter­pre­ta­dor PHP
  • PHP instalado
  • Navegador da Web
  • Editor de texto

Como servidor, re­co­men­da­mos o ambiente de teste local XAMPP, que a Apache Friends fornece gra­tui­ta­mente para os sistemas ope­ra­ci­o­nais Windows, Linux e macOS. O XAMPP é um servidor de teste puro. Os de­sen­vol­ve­do­res da Web podem usar o software para con­fi­gu­rar ambientes de teste para scripts, páginas HTML e folhas de estilo com fa­ci­li­dade. En­tre­tanto, a operação segura do servidor da Web na Internet não é garantida. Ins­tru­ções de­ta­lha­das de ins­ta­la­ção podem ser en­con­tra­das em nosso Tutorial do XAMPP.

Hos­pe­da­gem que se adapta às suas ambições
  • Fique online com 99,99% de tempo de atividade e segurança robusta
  • Aumente o de­sem­pe­nho com um clique à medida que o tráfego cresce
  • Inclui domínio gratuito, SSL, e-mail e suporte 24 horas por dia, 7 dias por semana

Qual é a sintaxe do PHP?

Depois de con­fi­gu­rar seu servidor da Web local (, por exemplo, usando o XAMPP), é uma boa ideia testar se o PHP foi instalado cor­re­ta­mente e se está pronto para executar scripts. Um script é um programa que não é compilado em código binário. Em vez disso, eles são exe­cu­ta­dos por um in­ter­pre­ta­dor. Abra seu editor de texto preferido **** e aplique o seguinte script PHP:

<?php
phpinfo();
?>
php
Imagem: Código PHP no editor de texto
Um editor de texto como o Notepad++ suporta pro­gra­ma­ção com realce de sintaxe.

Os scripts PHP seguem uma estrutura es­pe­cí­fica. A tag PHP de abertura <?php inicia umambiente de script. Isso é seguido pelo código PHP real na forma de ins­tru­ções. No exemplo acima, essa é a chamada para a funçãophpinfo(). A maioria das funções PHP exige um ou mais pa­râ­me­tros, que são colocados entre pa­rên­te­ses. Forphpinfo(), esses pa­râ­me­tros são opcionais:phpinfo(INFO_ALL). Cada instrução termina com um ponto e vírgula (;). Para concluir o script, use a tag PHP de fe­cha­mento:* ?>.

Definição

As funções são sub-rotinas que pos­si­bi­li­tam a ter­cei­ri­za­ção de partes do código do programa. Para evitar a repetição, as tarefas re­cor­ren­tes podem ser definidas uma vez como uma função e depois chamadas usando um nome de função. Os de­sen­vol­ve­do­res da Web usam funções PHP pre­de­fi­ni­das para essa fi­na­li­dade ou criam suas próprias sub-rotinas.

Salve o arquivo de texto com o nome test no formato .php (PHP script) e inicie seu servidor da Web. Se estiver usando o ambiente de teste XAMPP, salve test.php no diretório XAMPP em htdocs (C:\xampp\htdocs).

Você pode acessar o arquivo de amostra por meio do seguinte URL no navegador da Web: http://localhost/test.php. Se você usar um servidor da Web al­ter­na­tivo ou uma con­fi­gu­ra­ção in­di­vi­dual do software XAMPP, selecione o URL de acordo com o res­pec­tivo caminho do arquivo.

Ao digitar o URL http://localhost/test.php, você solicita que o navegador da Web solicite o arquivo test.php do servidor da Web. O Apache HTTP Server (ou qualquer tipo de software de servidor da Web que você esteja usando) recupera o arquivo no diretório apro­pri­ado. A extensão .php significa que o arquivo contém código PHP. Nesse ponto, o in­ter­pre­ta­dor PHP integrado ao servidor da Web se torna ativo. Ele processa o documento, en­con­trando a tag PHP de abertura <?php, que sinaliza o início do código PHP. O in­ter­pre­ta­dor executa o código PHP, gerando uma saída HTML que o servidor da Web transmite ao navegador da Web para exibição. Se o PHP tiver sido instalado cor­re­ta­mente, a execução do script resultará na seguinte página da Web:

Imagem: The PHP function phpinfo()
Quando um script é executado usando a função phpinfo() , o navegador exibe in­for­ma­ções sobre a con­fi­gu­ra­ção do PHP.

The phpinfo() function é uma abre­vi­a­ção da função padrão phpinfo( INFO_ALL ). Isso gera in­for­ma­ções de­ta­lha­das sobre a con­fi­gu­ra­ção do PHP de seu servidor da Web. Se nenhuma versão do PHP for en­con­trada, o navegador da Web exibirá uma mensagem de erro ou fornecerá o código PHP ao navegador sem in­ter­pretá-lo.

“Hello World!” - Como gerar texto por meio de echo

Depois de instalar o PHP com sucesso, é hora de escrever seu primeiro script. Você pode usar o PHP echo para fazer isso. Ao contrário de phpinfo(), echo não é uma função. Em vez disso, é uma cons­tru­ção de linguagem que permite que uma cadeia de ca­rac­te­res sub­se­quente seja exibida como texto.

Definição

As cons­tru­ções de linguagem são de­cla­ra­ções usadas no PHP para controlar o fluxo do programa. Além de echo, language cons­tructs incluem de­cla­ra­ções como if, for, do, include, return, exit ou the. Ao contrário das funções, não são ne­ces­sá­rios pa­rên­te­ses.

Para seu primeiro script per­so­na­li­zado, crie um novo arquivo PHP e insira o seguinte código:

<?php
echo 'Hello World!';
?>
php

A tag de abertura <?php inicia um ambiente de script. Ela é seguida pela cons­tru­ção de linguagem echo e pela string Hello World!, que está entre aspas simples. Use a tag ?> para encerrar o script. Observe o ponto e vírgula após a de­cla­ra­ção. Qualquer texto pode ser usado no lugar de Hello World!.

Salve o script como hello.php dentro do diretório htdocs do seu servidor da Web. Em seguida, acesse o arquivo usando o URL http://localhost/hello.php no navegador da Web. Se o código tiver sido trans­fe­rido com precisão, a janela do navegador deverá exibir a cadeia de ca­rac­te­res que você usou:

Imagem: Saída de texto com a construção de linguagem echo
A cons­tru­ção de linguagem echo instrui o servidor da Web a emitir a string Hello World!

Qualquer texto que você gere com echo pode in­cor­po­rar tags HTML, conforme ne­ces­sá­rio. Essas tags serão in­ter­pre­ta­das pelo navegador da Web de acordo com as es­pe­ci­fi­ca­ções HTML. Faça ex­pe­ri­ên­cias com esse conceito usando o seguinte script, por exemplo:

<?php
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
?>
php

Quando chamado no navegador da Web, o resultado da execução do script é exibido da seguinte forma.

Imagem: Resultado da execução do script com tags HTML
Se o resultado da execução do script contiver tags HTML, elas serão au­to­ma­ti­ca­mente in­ter­pre­ta­das pelo navegador da Web.

O texto Hello World!, que está contido em <h1> tags, é in­ter­pre­tado pelo navegador da Web como um título principal. Isso é sucedido por uma quebra au­to­má­tica de linha e pelo parágrafo de texto entre as <p> tags.

De­pen­dendo de suas ne­ces­si­da­des, você pode usar echo com aspas simples () ou aspas duplas (). Se estiver pro­du­zindo apenas texto, a escolha das aspas não importa. En­tre­tanto, essa distinção se torna sig­ni­fi­ca­tiva ao lidar com variáveis PHP.

Variáveis

A cons­tru­ção de linguagem echo oferece mais do que apenas a exibição de texto. Embora a apre­sen­ta­ção de texto já possa ser realizada com efi­ci­ên­cia usando HTML. A ver­da­deira vantagem de usar a cons­tru­ção da linguagem PHP echo está em sua ca­pa­ci­dade de produzir texto di­na­mi­ca­mente usando variáveis **.

Os usuários de PHP fre­quen­te­mente encontram variáveis no seguinte formato: $example

Cada variável consiste em um sinal de dólar ($) seguido pelo nome da variável. As variáveis são uti­li­za­das nos scripts PHP para in­cor­po­rar dados externos às páginas da Web. Elas podem abranger diversos tipos de valores, desde números básicos e cadeias de ca­rac­te­res até textos completos ou es­tru­tu­ras de do­cu­men­tos HTML. O PHP faz distinção entre sete tipos di­fe­ren­tes de variáveis:

Tipo de variável Des­crip­tion
String Uma string é uma sequência de ca­rac­te­res. Ela pode re­pre­sen­tar uma palavra, uma frase, um trecho de texto ou até mesmo o código HTML inteiro de uma página da Web.
Integer Um número inteiro é um número inteiro sem casas decimais. Pode ser positivo ou negativo.
Float Um float é um número de ponto flutuante. Trata-se de um valor numérico com casas decimais. O PHP suporta até 14 dígitos após o ponto decimal.
Boolean Variáveis booleanas são o resultado de uma operação lógica e conhecem apenas dois valores: TRUE (true) and FALSE (false). Esse tipo de variável é usado ao trabalhar com condições.
Array Um array é uma variável que pode conter vários elementos. É um agru­pa­mento de vários dados es­tru­tu­ra­dos de forma se­me­lhante que foram com­bi­na­dos em uma matriz.
Objeto O tipo de variável objeto permite que os pro­gra­ma­do­res definam seus próprios tipos de dados. Ele é usado na pro­gra­ma­Ã§Ã£o orientada a objetos. Incluímos object variáveis neste tutorial de PHP.
NULL O valor NULL re­pre­senta uma variável sem valor. Para variáveis desse tipo, NULL é o único valor possível.

A cen­tra­li­za­ção de conteúdo é nor­mal­mente ge­ren­ci­ada por meio de sistemas de banco de dados. No entanto, os valores das variáveis também podem ser atri­buí­dos di­re­ta­mente no script. Esse tipo de atri­bui­ção usa o seguinte padrão:

$example = "value";
php

O cifrão é sucedido pelo nome da variável (nesse caso exemplo). Ele é vinculado pelo sinal de igual (=) com um valor entre aspas duplas. Os valores de variáveis dos tipos inteiro e float são escritos sem aspas (por exemplo, $example = 24;e$example = 2.7;).

O PHP oferece fle­xi­bi­li­dade ao nomear variáveis. En­tre­tanto, algumas res­tri­ções se aplicam:

  • Cada variável começa com um cifrão.
  • Um nome de variável é qualquer sequência de letras, números e su­bli­nha­dos (Por exemplo, $example_1).
  • Um nome de variável válido sempre começa com uma letra ou um su­bli­nhado ($example1 ou $_example), nunca com um dígito (wrong: $1example).
  • O PHP é sensível a maiús­cu­las e mi­nús­cu­las. A linguagem de script faz distinção entre maiús­cu­las e mi­nús­cu­las ($example ≠ $Example).
  • O nome da variável não deve conter espaços ou quebras de linha (wrong: $example 1).
  • Strings re­ser­va­das pelo PHP para outros pro­pó­si­tos não podem ser usadas como variáveis definidas pelo usuário (por exemplo, $this)

Vamos ilustrar isso com um exemplo:

<?php
$author = "John Doe";
echo "<h1>Hello World!</h1> 
<p>This dynamic web page was created by $author.</p>";
?>
php

A tag PHP de abertura é seguida pela definição da variável. Nesse caso, $author recebe o valor John Doe. Após a execução do script, cada instância da variável $author dentro do script é subs­ti­tuída pelo valor John Doe no ambiente do script. Uma re­pre­sen­ta­ção visual desse processo no navegador da Web é ilustrada no diagrama a seguir:

Imagem: Geração de texto dinâmico com variáveis
Como resultado da execução do script, a variável $author recebeu o valor John Doe

Se a página da Web deveria ser atribuída a Max Mus­ter­mann, colega alemão de John Doe, e não a John Doe, você pode corrigir isso alterando a variável $author .

Imagem: Variáveis são usadas para criar páginas da Web dinamicamente
Para a variável $author, o valor Max Mus­ter­mann é usado.

Isso é par­ti­cu­lar­mente eficiente se uma variável ocorrer várias vezes em um script. Nesse caso, uma correção só pre­ci­sa­ria ser feita em um único ponto. Ou seja, onde o valor da variável é definido.

Isso ilustra a proeza do PHP: O conteúdo pode ser in­cor­po­rado usando variáveis. Essa ca­rac­te­rís­tica forma a base do de­sen­vol­vi­mento dinâmico da Web. Di­fe­ren­te­mente das páginas estáticas da Web, que existem como páginas HTML pré-ren­de­ri­za­das, as páginas dinâmicas da Web são geradas somente quando a página é acessada. O in­ter­pre­ta­dor PHP recupera elementos distintos da página da Web so­li­ci­tada de vários bancos de dados por meio de variáveis e os compila em uma página HTML per­so­na­li­zada que se alinha à so­li­ci­ta­ção es­pe­cí­fica.

Os be­ne­fí­cios dessa abordagem são evidentes. Quando elementos do site (, por exemplo, na seção de rodapé) , são mo­di­fi­ca­dos, não são ne­ces­sá­rios ajustes manuais em cada subpágina in­di­vi­dual. A atu­a­li­za­ção do registro cor­res­pon­dente no banco de dados é su­fi­ci­ente. Como resultado, as revisões são aplicadas au­to­ma­ti­ca­mente a todas as páginas da Web que apre­sen­tam os dados per­ti­nen­tes como variáveis. Se uma variável for definida várias vezes em um script, a nova definição subs­ti­tuirá a anterior. Um echo sub­se­quente sempre gera o valor atual de uma variável.

<?php
$author = "John Doe";
echo "<h1>Hello World!</h1> 
<p>This dynamic web page was created by $author.</p>";
$author = "Max Mustermann";
echo " <p>Supported by $author.</p>";
?>
php
Imagem: Sobregravação de variáveis
O valor John Doe é so­bres­crito com o valor Max Mus­ter­mann

No exemplo de código, a variável $author foi primeiro atribuída ao valor John Doe e depois subs­ti­tuído pelo valor Max Mus­ter­mann.

Agora vamos ao assunto dos marcos de citação. Ao contrário das cadeias de ca­rac­te­res, as variáveis simples não precisam ser colocadas entre aspas:

<?php
$author = "John Doe";
echo $author;
?>
php

Exceto quando a variável precisa ser usada em uma cadeia de ca­rac­te­res. Nesse caso, trabalhe com aspas duplas (). Isso instrui o in­ter­pre­ta­dor do PHP a procurar variáveis na cadeia de ca­rac­te­res e substituí-las pelos valores cor­res­pon­den­tes, conforme ne­ces­sá­rio. Strings entre aspas simples () são in­ter­pre­ta­das e ren­de­ri­za­das como in­for­ma­ções de texto simples, mesmo quando envolvem variáveis.

<?php
$author = "John Doe";
echo '<h1>Hello World!</h1> 
<p>This dynamic web page was created by $author.</p>';
?>
php
Imagem: Saída de texto simples com aspas simples
Aspas simples resultam em saída de texto simples. As variáveis não são in­ter­pre­ta­das.

Agora você deve estar se per­gun­tando o que acontece se omitir com­ple­ta­mente as aspas. Nesse caso, o PHP aponta para um erro sintático.

Mensagens de erro e mas­ca­ra­mento

Se ocorrerem erros sin­tá­ti­cos , não haverá código PHP válido e o in­ter­pre­ta­dor do PHP emitirá uma mensagem de erro. Isso pode ser esperado, por exemplo, se você usar a instrução echo com uma string sem aspas:

<?php
echo Hello World!;
?>
php

Na maioria dos casos, as mensagens de erro contêm in­for­ma­ções sobre onde ocorreu um erro, for­ne­cendo in­for­ma­ções im­por­tan­tes sobre como eliminá-lo.

Imagem: Mensagem de erro do navegador da Web: Parse error
Uma mensagem de erro indica erros sin­tá­ti­cos no código do programa.

No exemplo atual, suspeita-se de um erro na linha 2 do código do nosso programa. Foi exa­ta­mente nesse ponto que omitimos as aspas.

Os erros sin­tá­ti­cos também ocorrem quando você deseja gerar ca­rac­te­res como texto que estão as­so­ci­a­dos a uma tarefa es­pe­cí­fica no PHP. Um exemplo disso são as aspas (). Ca­rac­te­res como esse só podem ser exibidos como texto no PHP se você indicar ao in­ter­pre­ta­dor que a função inerente do caractere foi neu­tra­li­zada. No caso das aspas simples, há duas maneiras de fazer isso. Você pode colocar uma string de aspas simples entre aspas duplas ou pode mascarar as aspas com uma barra invertida anterior (\):

<?php
echo '\'Hello World!\' ';
?>
php
Imagem: A barra invertida como um caractere de mascaramento
Se os ca­rac­te­res forem mas­ca­ra­dos com uma barra invertida, eles serão des­ti­tuí­dos de sua função na sintaxe do PHP.

A com­bi­na­ção de aspas simples e duplas também é uma abordagem viável:

<?php
echo " 'Hello World!' ";
?>
php

No entanto, não esta or­to­gra­fia:

<?php
echo ' 'Hello World!' ';
?>
php

Os espaços entre as aspas foram inseridos nos exemplos para fins de le­gi­bi­li­dade.

Ope­ra­do­res de con­ca­te­na­ção

Para gerar várias variáveis em um script PHP ao mesmo tempo, você pode usar o que aprendeu até agora e fazer o seguinte:

<?php
$author1 = "John Doe";
$author2 = "Max Mustermann";
echo "<h1>Hello World!</h1> 
<p>This dynamic web page was created by $author1 and $author2.</p>";
?>
php

Basta escrever as duas variáveis na string entre aspas duplas junto com o restante do texto a ser gerado. O PHP reconhece au­to­ma­ti­ca­mente as variáveis pelo sinal de dólar ($) e insere os valores apro­pri­a­dos.

Imagem: Saída de texto com duas variáveis
As variáveis na string só são aceitas pelo PHP se o script não contiver funções.

Entre os pro­gra­ma­do­res, no entanto, esse pro­ce­di­mento é con­si­de­rado impuro. Há uma regra de pro­gra­ma­ção segundo a qual variáveis não devem fazer parte da string. Um motivo para isso é que muitas lin­gua­gens de pro­gra­ma­ção exigem essa separação. Mais im­por­tante ainda, o PHP também exige que você separe string e variável ao trabalhar com chamadas de função ou variáveis mais complexas. Por isso, é melhor mantê-las separadas também na saída de texto simples, mesmo que isso não seja exa­ta­mente ne­ces­sá­rio nesse caso.

Ao trabalhar com variáveis, você sempre terá de lidar com vários elementos que precisam ser con­ca­te­na­dos durante a saída. No PHP, o operador de con­ca­te­na­ção * ** * (.) é usado para essa fi­na­li­dade. Se pro­gra­mado de forma “limpa”, o código do exemplo acima deverá ter a seguinte aparência:

<?php
$author1 = "John Doe";
$author2 = "Max Mustermann";
echo '<h1>Hello World!</h1> 
<p>This dynamic web page was created by ' . $author1 . ' and ' . $author2 . '.</p>';
?>
php
Imagem: Conectando strings e variáveis com operadores de concatenação
Ope­ra­do­res de con­ca­te­na­ção conectam strings e variáveis

Aqui estamos lidando com três strings e duas variáveis que foram con­ca­te­na­das em uma string.

String1 Variable1 String2 Variable2 String3
’&lt;h1>Hello World!&lt;/h1>
&lt;p>Esta página da Web dinâmica foi criada por ’
. $author1 . ’ e ’ . $author2 . ’.&lt;/p>’

É im­por­tante mencionar que um operador de con­ca­te­na­ção mescla cadeias de ca­rac­te­res ou variáveis sem in­tro­du­zir espaços. Se um espaço for pre­ten­dido, ele precisa ser ex­pli­ci­ta­mente incluído entre aspas na cadeia de ca­rac­te­res, conforme de­mons­trado no exemplo.

Os pro­gra­ma­do­res empregam o operador de con­ca­te­na­ção não apenas para combinar cadeias de ca­rac­te­res e variáveis para saída textual, mas também para estender variáveis. O exemplo a seguir ilustra como isso é feito:

<?php
$example = 'Hello ';
$ example .= 'World';
echo $ example;
?>
php

Para estender o valor de uma variável, defina-a novamente, mas coloque o operador de con­ca­te­na­ção dot (.) antes do sinal de igual. Essa é a notação comum de shorthand para $example = $example . ‘world’.

O PHP anexará o novo valor ao valor definido an­te­ri­or­mente. Se você quiser um espaço entre os dois valores, escreva-o no final da primeira cadeia de ca­rac­te­res, como no exemplo.

Imagem: Estendendo o valor de uma variável
A string Hello foi estendida para Hello World.

In­cor­po­rar PHP em HTML

Em princípio, o in­ter­pre­ta­dor do PHP só se interessa pelo código que está entre uma tag PHP de abertura e uma de fe­cha­mento:

<?php [This section is parsed by the PHP interpreter] ?>

O in­ter­pre­ta­dor ignora todas as seções restantes do documento e as encaminha para o servidor da Web sem alterá-las. Como resultado, o código PHP pode ser in­cor­po­rado sem problemas em do­cu­men­tos HTML conforme ne­ces­sá­rio, por exemplo, ao criar modelos para sistemas de ge­ren­ci­a­mento de conteúdo. É fun­da­men­tal salvar os do­cu­men­tos HTML que contêm código PHP com a extensão de arquivo PHP. Caso contrário, o documento será apre­sen­tado di­re­ta­mente ao navegador da Web sem passar pelo pré-pro­ces­sa­mento do in­ter­pre­ta­dor PHP. Esse cenário faria com que o código ficasse visível como texto no site.

Você pode pensar no in­ter­pre­ta­dor PHP como o colega pre­gui­çoso do servidor da Web, que só trabalha quando é ex­pli­ci­ta­mente so­li­ci­tado a fazê-lo, por exemplo, por uma tag PHP de abertura.

Para combinar HTML e PHP, escreva sua página HTML na estrutura clássica de do­cu­men­tos e salve-a com a extensão de arquivo .php:

<!DOCTYPE html>
<html lang="de">
    <head>
        <meta charset="utf-8">
        <title>My first PHP page</title>
    </head>
        <body>
    <h1>Hello World</h1>
    <p>What is the current time and date?</p>
    </body>
</html>
html

Agora, adicione um script PHP ao seu documento HTML. Cer­ti­fi­que-se de que todo o código esteja dentro das tags PHP.

<!DOCTYPE html>
<html lang="de">
    <head>
        <meta charset="utf-8">
        <title>My first PHP page</title>
    </head>
    <body>
    <h1>Hello World</h1>
    <p>What is the current time and date?</p>
    <p>Your current time and date is: 
    <?php 
    echo date("d.m.Y H:i:s");
    ?>.</p>
    </body>
</html>
html

Nesse caso, mesclamos a cons­tru­ção de linguagem echo com a função PHP date() para gerar a data e a hora atuais como texto do lado do servidor. O parâmetro da função designa o formato pre­fe­ren­cial, indicado como uma cadeia de ca­rac­te­res:

d.m.Y H:i:s = dia.mês.ano hora:minuto:segundo.

Quando um navegador da Web solicita esse arquivo, o in­ter­pre­ta­dor PHP executa ini­ci­al­mente o script, in­cor­po­rando a hora atual como texto no documento HTML. Em seguida, o servidor da Web transmite esse documento, que é exibido no navegador como uma página da Web.

Imagem: Integração de PHP em HTML
O documento HTML contém um script PHP integrado que exibe a data atual, incluindo a hora.

Função de co­men­tá­rio PHP

Se­me­lhante ao código HTML, você também pode deixar co­men­tá­rios em seu código PHP. Os co­men­tá­rios no código-fonte são des­con­si­de­ra­dos pelo in­ter­pre­ta­dor do PHP, desde que obedeçam às regras de sintaxe. O PHP oferece três métodos distintos para co­men­tá­rios.

Para designar uma linha inteira como um co­men­tá­rio e, assim, excluí-la da in­ter­pre­ta­ção, você pode utilizar a hashtag (#) ou duas barras con­se­cu­ti­vas ** (//)**. Ambas as opções são usadas no exemplo de código a seguir:

<?php
#This is a single-line comment!
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
//This is also a single-line comment!
?>
php

O editor de texto Notepad++ destaca os co­men­tá­rios em verde. Di­fe­ren­te­mente dos co­men­tá­rios em HTML, as seções de texto rotuladas como co­men­tá­rios no ambiente de script não chegam ao navegador da Web. Essa distinção ocorre porque o in­ter­pre­ta­dor PHP já as des­con­si­dera durante a execução do script.

Imagem: Comentários de uma única linha
As linhas marcadas como co­men­tá­rios não são visíveis na saída.

Além disso, você pode inserir co­men­tá­rios que se estendem por várias linhas. Para fazer isso, marque o início de uma seção de co­men­tá­rios com uma barra seguida de um asterisco (/*) e o final com um asterisco seguido de uma barra (*/).

<?php
/*
This is a multiple-line comment block
that spans over multiple
lines
*/
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
?>
php

Esses co­men­tá­rios não são ana­li­sa­dos e não são exibidos no site.

Imagem: Exemplo de um comentário de várias linhas
O co­men­tá­rio de várias linhas não é visível na saída.

Os pro­gra­ma­do­res usam co­men­tá­rios para es­tru­tu­rar o código-fonte de seus scripts, deixar notas para edição posterior edição posterior ou adicionar in­for­ma­ções internas à com­pi­la­ção, como o autor ou a data. Os co­men­tá­rios são opcionais e devem ser uti­li­za­dos com moderação para garantir a boa le­gi­bi­li­dade do código-fonte.

Cálculo com variáveis

Em nosso tutorial de PHP, você já encontrou variáveis, que contêm prin­ci­pal­mente valores de cadeia de ca­rac­te­res. Agora, vamos nos apro­fun­dar nas variáveis que re­pre­sen­tam inteiros ou floats. Quando as variáveis armazenam valores numéricos, o PHP permite a re­a­li­za­ção de cálculos com elas. Vamos começar com a adição de dois números inteiros:

<?php
$number1 = 237;
$number2 = 148;
$result = $number1 + $number2;
echo "result: " . $result;
?>
php

Primeiro, atri­buí­mos os números inteiros 237 e 148 às variáveis $number1 e $number2 e, em seguida, definimos a variável $result. Isso é usado para armazenar a soma das variáveis $number1 e $number2. Para essa operação, usamos o operador arit­mé­tico +(plus). Por fim, emitimos a soma como texto usando a cons­tru­ção de linguagem* echo* . Observe que não é ne­ces­sá­rio usar aspas ao atribuir valores numéricos a variáveis.

Imagem: Adição de números inteiros usando um script PHP
O resultado da adição é exibido como texto no navegador da Web.

O exemplo de código a seguir mostra uma seleção de cálculos ma­te­má­ti­cos que podem ser exe­cu­ta­dos no lado do servidor com o PHP. Os ope­ra­do­res PHP usados cor­res­pon­dem, em sua maior parte, a símbolos ma­te­má­ti­cos padrão.

Operador arit­mé­tico Operation Result
$number1 + $number2 Addition Soma de $number1 e $number2
$number1 - $number2 Subtração Diferença de $número1 e $número2
$number1 *$number2 Mul­ti­pli­ca­Ã§Ã£o Produto de $número1 e $número2
$number1 / $number2 Divisão Quociente de $número1 e $número2
$número1 **$número2 Power $number2-th power of $number1
<?php
$number1 = 10;
$number2 = 5;
$addition = $number1 + $number2; //addition
$subtraction = $number1 - $number2; //subtraction
$multiplication = $number1 * $number2; //multiplication
$division = $number1 / $number2; //division
$power = $number1 ** $number2; //power
?>
php
<?php 
echo "Result of addition: " . $addition ."<br />"; 
echo "Result of subtraction: " . $subtraction . "<br />"; 
echo "Result of multiplication: " . $multiplication . "<br />";
echo "Result of division: " . $division . "<br />";
echo "10 to the 5th power (10^5): " . $power . "<br />";
echo "root of 81: " . sqrt(81) . "<br />";
?>
php
Imagem: Calculando com variáveis
Arith­me­tic ope­ra­ti­ons at a glance

Para cálculos complexos, várias operações arit­mé­ti­cas podem ser com­bi­na­das em um único script:

<?php
$number1 = 10;
$number2 = 5;
$result = 2 *$number1 + 5* $number2 - 3 * sqrt(81);
echo "Result: " . $result; 
?>
php

O in­ter­pre­ta­dor PHP determina os valores das variáveis e faz os cálculos:

2 *10 + 5* 5 - 3 * √81 = 20 + 25 - 27 = 18

A função sqrt() calcula a raiz quadrada do parâmetro entre colchetes. O clássico ordem de clas­si­fi­ca­ção de ope­ra­do­res da ma­te­má­tica se aplica: ponto antes do traço. A instrução echo produz o resultado como uma string para o navegador da Web.

Imagem: Cálculo matemático com duas variáveis e diferentes operadores aritméticos
O PHP segue a regra do ponto antes da barra.

O PHP também avalia termos entre colchetes primeiro. Desta vez, tra­ba­lha­re­mos com números de ponto flutuante:

<?php
$number1 = 2.5;
$number2 = 3.7;
$result = 2 *($number1 + 5)* ($number2 - 3) * sqrt(81);
echo "Result: " . $result; 
?>
php
Imagem: Cálculo com números de ponto flutuante e termos entre colchetes
Cálculo PHP com o resultado 94,5

Como todas as lin­gua­gens de pro­gra­ma­ção comuns, o PHP permite ope­ra­do­res para in­cre­men­tar ou de­cre­men­tar valores numéricos pelo valor 1. É feita uma distinção entre o operador de pré-in­cre­mento, o operador de pré-de­cre­mento, o operador de pós-in­cre­mento e o operador de pós-de­cre­mento.

Operation Operator Result
Pre-increment ++$number O operador ++++ in­cre­menta o valor da variável $number. O valor é in­cre­men­tado em 1. O resultado é retornado como o novo valor de $number.
Pre-decrement –$number O operador – diminui o valor da variável $number. Isso diminui o valor em 1. O resultado é retornado como o novo valor de $number.
Post-increment $number++ O valor atual de $number é primeiro retornado e, em seguida, in­cre­men­tado em 1.
Post-decrement $number– O valor atual de $number é primeiro retornado e depois diminuído pelo valor 1.

Primeiro, ilus­tra­re­mos como executar operações arit­mé­ti­cas com ope­ra­do­res de in­cre­mento e de­cre­mento for­ne­cendo um exemplo com pré-in­cre­mento. O script a seguir in­cre­menta o valor da variável $number em 1, armazena o novo valor na variável $result e, em seguida, gera seu valor como uma cadeia de ca­rac­te­res:

<?php
$number = 0;
$result = ++$number;
echo "Result: " . $result;
?>
php

Se você aumentar o valor 0 por 1, obterá o resultado 1.

Imagem: Pré-incrementar o número 0
O operador ++ in­cre­menta 0 pelo valor 1.

Para calcular o pré-de­cre­mento da variável $number, usamos os mesmos scripts, mas trocamos o operador de pré-in­cre­mento (++) por um operador de pré-de­cre­mento ():

<?php
$number = 0;
$result = --$number;
echo "Result: " . $result;
?>
php

Aqui, di­mi­nuí­mos o valor 0 da variável $number e obtemos o resultado -1.

Imagem: Pré-decrementar o número 0
O operador -- de­cre­menta o número 0 pelo valor 1

Um aumento antes e depois da saída (pre- vs. post-…) de um valor pode ser de­mons­trado com o seguinte script:

<?php
$x = 0;
echo '<p>result: ' . ++$x;
echo '<br>x has the value ' . $x;
echo '<p>result: ' . $x++;
echo '<br>x has the value ' . $x, '</p>';
?>
php

Em ambos os casos, obtemos o mesmo resultado. Com o pré-in­cre­mento, o valor de x é aumentado antes da saída na linha 3, enquanto que com o pós-in­cre­mento, ele é in­cre­men­tado após a saída na linha 5.

Imagem: A diferença entre as pré e pós-incrementações
Pre- and post-in­cre­men­ta­ti­ons in com­pa­ri­son

Como usar as su­per­glo­bais $_GET e $_POST

Agora você está fa­mi­li­a­ri­zado com os fun­da­men­tos do PHP. Você pode trabalhar com variáveis, con­ca­te­nar e realizar cálculos. A seguir, ilus­tra­re­mos o papel fun­da­men­tal das variáveis no scripting.

Uma função im­por­tante das lin­gua­gens de script é sua ca­pa­ci­dade de avaliar a entrada do usuário e trans­fe­rir os valores para outro script. O PHP depende das su­per­glo­bais $_GET e $_POST-pre­de­fi­ni­dasvariáveis de sistemadis­po­ní­veis em todos os escopos-para a trans­fe­rên­cia de dados. Como arrays as­so­ci­a­ti­vos (campos de dados),$_GET e $_POST armazenam um conjunto de variáveis na forma de strings em uma variável.

As matrizes do PHP podem ser com­pa­ra­das a um armário com várias gavetas. Cada uma dessas gavetas oferece um espaço para armazenar dados. Para manter a clareza sobre o conteúdo de cada gaveta, você as marca com um nome de variável. De­pen­dendo do tipo de array, esse iden­ti­fi­ca­dor pode ser um índice ou uma chave. Nas matrizes indexadas, você atribui um índice numérico a cada gaveta, enquanto nas matrizes as­so­ci­a­ti­vas, você rotula as gavetas usando uma chave baseada em cadeia de ca­rac­te­res.

As su­per­glo­bais $_GET e $_POST abrangem uma coleção de variáveis re­pre­sen­ta­das como chaves, per­mi­tindo o acesso aos valores cor­res­pon­den­tes. Vamos nos apro­fun­dar mais nesse assunto quando ex­plo­rar­mos as $_GET e $_POST su­per­glo­bais em pro­fun­di­dade.

Trans­fe­rên­cia de dados via $_GET

A su­per­glo­bal $_GET re­pre­senta uma matriz de variáveis que são passadas para um script PHP usando um URL.

Se você passa algum tempo em blogs ou emlojas on-lineefóruns da Internet, deve ter notado alguns URLs estranhos. Nor­mal­mente, eles são es­tru­tu­ra­dos de acordo com o seguinte esquema:

http://hostname/ordner/filename.php?variablenname=variablevalue

Para um blog, o esquema pode ser parecido com este:

http://www.example-blog.com/index.php?id=1

A de­com­po­si­ção desse URL é re­la­ti­va­mente simples. Em um servidor da Web que tenha o domínio example-blog.com , há um arquivo chamado index.php. Esse arquivo é usado para criar páginas dinâmicas da Web e nor­mal­mente contém código HTML e PHP, além de re­fe­rên­cias a arquivos de modelos externos e folhas de estilo - es­sen­ci­al­mente, todos os com­po­nen­tes ne­ces­sá­rios para a exibição da página da Web.

A adição de id=1 em um URL é uma maneira comum de saber se uma página da Web é dinâmica. Você o en­con­trará lo­ca­li­zado após o ponto de in­ter­ro­ga­ção (?) em um URL. Esse com­po­nente é conhecido como uma string de consulta HTTP e contém uma variável (id) e um valor (1), que são vin­cu­la­dos por um sinal de igual (=). Pa­râ­me­tros de URL dessa natureza são em­pre­ga­dos para gerar páginas da Web dinâmicas, recuperar o conteúdo do banco de dados e acionar modelos apro­pri­a­dos.

Os sites dinâmicos permitem a separação do conteúdo e da apre­sen­ta­ção. Embora o index.php contenha as in­for­ma­ções sobre a estrutura de um site, ele ainda precisa ser pre­en­chido com conteúdo. Esses conteúdos ge­ral­mente são ar­ma­ze­na­dos em um banco de dados e podem ser acessados usando pa­râ­me­tros na string de consulta HTTP. No exemplo, a URL do index.php passa o parâmetro id=1. Isso es­pe­ci­fica qual conteúdo deve ser lido do banco de dados e carregado em index.php. No contexto de um blog, pode ser o ID de um artigo; em um fórum, uma de­ter­mi­nada postagem. Em uma loja on-line, pode ser um produto es­pe­cí­fico.

Se um URL contiver mais de um parâmetro, eles serão co­nec­ta­dos com um ampersand (&).

www.example-blog.com/index.php?page=article&id=1

A seguir, mos­tra­re­mos como usar $_GET. Para o exemplo, não é ne­ces­sá­rio usar um banco de dados. No script a seguir, usamos a su­per­glo­bal $_GET para ler os valores das variáveis firstnameelastname de uma string de consulta HTTP e gravá-los nas variáveis PHP $variable1 e $variable2:

<?php
$variable1 = $_GET['firstname'];
$variable2 = $_GET['lastname'];
echo "Hello " . $variable1 . " " . $variable2 . "!";
?>
php

O script é chamado pelo seguinte URL:

localhost/hello.php?firstname=John&lastname=Doe.

Os pa­râ­me­tros firstname=Johnelastname=Doe foram passados. A saída dos valores é feita exa­ta­mente como antes, usando a cons­tru­ção de linguagem echo.

Imagem: Dados sendo passados usando $_GET
The URL pa­ra­me­ters pass the variable value pairs firstname=John and lastname=Doe to the PHP script.

Uma trans­fe­rên­cia de dados por meio de $_GET ine­vi­ta­vel­mente faz com que os dados trans­fe­ri­dos fiquem visíveis na linha de endereço. Isso significa que os pa­râ­me­tros que foram passados podem ser ras­tre­a­dos. A vantagem é que as variáveis podem ser ar­ma­ze­na­das em hi­per­links. Além disso, os usuários têm a opção de salvar URLs incluindo a string de consulta HTTP como mar­ca­do­res no navegador.

No entanto, o fato de os pa­râ­me­tros GET serem listados em texto simples no URL torna esse método in­com­pa­tí­vel com a trans­fe­rên­cia de dados con­fi­den­ci­ais, como os dados gerados por for­mu­lá­rios on-line. Além disso, a quan­ti­dade de dados que pode ser passada usando $_GET é limitada pelo com­pri­mento máximo dos URLs.

Você pode contornar essas res­tri­ções com o método HTTP POST. Os dados que são passados com esse método podem ser en­con­tra­dos na seção $_POST su­per­glo­bal.

Trans­fe­rên­cia de dados via $_POST

Enquanto no método GET os dados são passados como um parâmetro de URL, com $_POST, a trans­fe­rên­cia de dados ocorre no corpo de uma so­li­ci­ta­ção HTTP. Isso pos­si­bi­lita até mesmo a passagem de grandes quan­ti­da­des de dados de um script para outro.

Um campo de aplicação central do método HTTP POST é a trans­fe­rên­cia de dados de for­mu­lá­rios HTML. De­mons­tra­re­mos isso usando o exemplo de uma as­si­na­tura de boletim in­for­ma­tivo.

Para fazer isso, crie um novo arquivo PHP com o nome page1.php e copie o seguinte bloco de código:

<form method="post" action="page2.php" >
Please send your newsletter to: <br />
Your name: <input type="text" name="first name" /><br />
Your surname: <input type="text" name="lastname" /><br />
Your email address: <input type="text" name="email" /><br />
<input type="submit" value="Send form" />
</form>
php

O elemento HTML <form> é usado para criar for­mu­lá­rios. A tag start contém dois atributos: methodeaction. Com o atributo method , você define o método de trans­mis­são, nesse caso HTTP-POST. No atributo action , você armazena o URL de um script que recebe todos os dados inseridos nos campos de entrada sub­se­quen­tes. O exemplo mostra um **for­mu­lá­rio HTML com três elementos de entrada ** (input type=“text”) e um botão **submit ** (input type=“submit”). O arquivo page2.php é definido como o des­ti­na­tá­rio dos dados.

Para ilustrar a trans­fe­rên­cia de dados usando $_POST, usaremos um script simples para avaliar os dados do for­mu­lá­rio, que armazena os valores enviados como variáveis PHP e os exibe em forma de texto. Para fazer isso, crie um arquivo page2.php e insira o seguinte código de programa:

<?php
$name = $_POST["name"];
$surname = $_POST["lastname"];
$email = $_POST["email"]; 
echo "Hello " . name . " " . $lastname . ", <br /> 
You have registered with the following e-mail address:" . $email . ".";
?>
php

Salve os dois arquivos PHP na pasta htdocs do seu servidor de teste e chame page1.php a partir do seguinte URL em seu navegador da Web: http://localhost/page1.php. Seu navegador agora mostrará a interface in­te­ra­tiva da Web do for­mu­lá­rio HTML.

Imagem: Entrada de dados via formulário HTML
O for­mu­lá­rio HTML page1.php coleta dados do usuário e os envia para o script com o endereço page2.php

Insira quaisquer cre­den­ci­ais e pressione o botão enviar para trans­fe­rir variáveis de um script para outro. Depois de confirmar as inputs de page1.php , você será ime­di­a­ta­mente re­di­re­ci­o­nado para page2.php. A janela do navegador mostrará o resultado da execução do script com base nos dados enviados.

Imagem: Saída de dados do usuário
Trans­fe­rên­cia de dados com o método HTTP POST e saída via echo

A entrada do usuário capturada por meio dos campos de entrada page1.php será re­cu­pe­rada por page2.php via:

$_POST["input field name"]

A linha $firstname = $_POST[“firstname”] recupera a entrada no campo de entrada firstname e a armazena na variável $firstname. A variável $firstname pode, por sua vez, ser emitida como uma string usando echo.

Como usar os ope­ra­do­res de com­pa­ra­ção do PHP e a cons­tru­ção IF

Até agora, definimos variáveis, as passamos de um script para outro e as pro­du­zi­mos como strings. Na próxima etapa, você aprenderá a vincular a execução de frag­men­tos de código a de­ter­mi­na­das condições.

A cons­tru­ção de linguagem if permite que você escreva scripts de forma que as ins­tru­ções só tenham efeito quando uma condição definida por você for atendida, por exemplo, digitar a senha correta.

As condições são definidas no PHP de acordo com a seguinte estrutura básica:

<?php
if(expression)
    {
    statement;
    }
?>
php

Isso é o seguinte: Se a condição delineada em expressão for atendida, a de­cla­ra­ção será executada. Uma condição é sempre atendida se o if construct retornar o resultado TRUE (true). Caso contrário, é con­si­de­rada FALSE (false). Nesse caso, a de­cla­ra­ção será ignorada.

Nor­mal­mente, a cons­tru­ção if verifica se o valor de uma variável cor­res­ponde ao que foi definido na condição. Essa estrutura de controle ge­ral­mente é realizada com base em ope­ra­do­res de com­pa­ra­ção.

Ope­ra­do­res de com­pa­ra­ção

Os ope­ra­do­res de com­pa­ra­ção são usados na for­mu­la­ção de condições para colocar dois ar­gu­men­tos em uma relação lógica que pode ser avaliada como ver­da­deira (TRUE) ou false (FALSE). Quando os ope­ra­do­res de com­pa­ra­ção são usados em es­tru­tu­ras de controle do PHP, eles são aplicados a duas variáveis na expressão de uma se cons­tru­ção:

if ($a == $b) 
    {
    statement;
    }
php

Em termos de linguagem, a estrutura de controle é a seguinte: Se a variável $a for igual à variável $b, então as ins­tru­ções definidas na instrução statement são exe­cu­ta­das.

Os ope­ra­do­res de com­pa­ra­ção do PHP são baseados na linguagem de pro­gra­ma­ção C e sua notação difere con­si­de­ra­vel­mente dos símbolos ma­te­má­ti­cos clássicos. Uma visão geral pode ser en­con­trada na tabela abaixo.

Operador de com­pa­ra­Ã§Ã£o Des­crip­tion Condition
== equals A condição é atendida se $ae $b tiverem o mesmo valor.
=== é idêntico A condição é atendida se $ae $b tiverem o mesmo valor e per­ten­ce­rem ao mesmo tipo de dados. Isso pode ser ilustrado com um exemplo em que um inteiro (1) é comparado com uma string (“1”):
1 == “1” //TRUE
1 === “1” //FALSE

Para condições que exigem que duas variáveis sejam iguais, é melhor usar sempre o operador re­la­ci­o­nal === (é idêntico).
!= é desigual A condição é atendida se $ae $b tiverem valores desiguais.
!== não idênticos A condição é atendida se $ae $b tiverem valores desiguais ou per­ten­ce­rem a tipos de dados di­fe­ren­tes.
< é menor que A condição é atendida se o valor $a for menor que o valor $b.
> é maior que A condição é atendida se o valor de $a for maior que o valor de $b.
<= é menor ou igual a A condição é atendida se o valor de $a for menor que o valor de $b ou $ae $b têm o mesmo valor.
>= é maior ou igual a A condição é atendida se o valor de $a for maior que o valor de $b ou $ae $b têm o mesmo valor.

O script a seguir deve es­cla­re­cer essa estrutura de controle. Dois números inteiros são com­pa­ra­dos. É usado o operador de com­pa­ra­ção < (is smaller) :

<?php
$number1 = 10;
$number2 = 20;
if($number1 < $number2) { 
    echo "The condition is fulfilled";
}
php

Definimos as variáveis $number1 e $number2 e atri­buí­mos a elas os valores 10e20. Em seguida, definimos uma condição: Se $number1 for menor que $number2, a cadeia de ca­rac­te­res listada na instrução echo deve ser gerada.

O resultado da execução do script contém a resposta: 10 é menor que 20. O construto if retorna o resultado TRUE. A condição foi atendida.

Imagem: A construção de linguagem if no aplicativo
Se a condição for atendida, a instrução será executada.

Para definir de­cla­ra­ções que são exe­cu­ta­das se uma condição não for atendida, adicione a cons­tru­ção de linguagem else ao if para formar uma de­cla­ra­ção if-else em PHP:

<?php
if(condition a)
    {
    statement b;
    }
else 
    {
    statement c
    }
?>
php

Esse script verifica se a condição a retorna TRUE ou FALSE. Se a condição a for atendida (TRUE) statement b is executed. Se a condição a não for atendida (FALSE), a instrução b é ignorada e a instrução c é executada em seu lugar.

Vamos estender nosso script com o else construct e trocar o operador de com­pa­ra­ção < (é menor) para == (é igual):

<?php
$number1 = 10;
$number2 = 20;
if($number1 == $number2) 
    { 
    echo "The condition is fulfilled";
    }
else 
    {
    echo "The condition is not fulfilled";
    }
?>
php

Desta vez, a if construct retorna FALSE. O valor da variável $number1 não é igual ao valor de $number2. A condição não é atendida. Portanto, a instrução listada em if não é executada, mas a definida em else é.

Imagem: A construção de linguagem else no aplicativo
Se a condição não for atendida, a instrução definida em else será executada.
Nota

Para vincular a execução de um fragmento de código a dois valores iguais, um sinal de igual duplo (==) é usado no PHP. Um único sinal de igual (=) é usado para atribuir valores a variáveis.

Você pode negar condições colocando um ponto de ex­cla­ma­ção (!) before an ex­pres­sion.

<?php
$number1 = 10;
$number2 = 20;
if ($number1 == $number2) 
    { 
    echo "The numbers are the same.";
    }
if (!($number1 == $number2))
    {
    echo "The numbers are not equal.";
    }
?>
php

Esse exemplo destaca a condição $number1 == $number2 e sua negação. !($number1 == $number2) é equi­va­lente a ($number1 != $number2).

Uma aplicação prática de ifandelse é a consulta de senha baseada em um for­mu­lá­rio HTML. Podemos simular isso usando nossos arquivos PHP page1.phpepage2.php.

Abra page1.php e cole o código a seguir:

<form action="page2.php" method="post">
Please enter your password: <input type="password" name="password" />
<input type="submit" value="send" />
</form>
php

A estrutura cor­res­ponde a um for­mu­lá­rio criado an­te­ri­or­mente. Desta vez, no entanto, um campo de entrada é su­fi­ci­ente: a consulta de senha. Como antes, a entrada do usuário é passada para o script page2.php .

Podemos adaptar isso usando o código a seguir para que a entrada de senha seja comparada com uma senha ar­ma­ze­nada:

<?php
$password = $_POST["password"];
if($password=="qwertz123")
    {
    echo "The password was correct";
    }
else
    {
    echo "The password was incorrect";
    }
?>
php

O código pode ser explicado da seguinte forma: Ini­ci­al­mente, atri­buí­mos um valor à variável $password na linha 2, que re­cu­pe­ra­mos usando o método HTTP POST. Em seguida, definimos a seguinte estrutura de controle: O if construct na linha 3 deve verificar se o valor da variável $password cor­res­ponde à string qwertz123. Se esse for o caso, a cadeia de ca­rac­te­res A senha estava correta é emitida. Se if retorna o resultado FALSE, else é usado na linha 7 e a string The password was incorrect é emitida.

Agora chamamos o script page1.php por meio do URL http://localhost/page1.php.

Imagem: Interface da Web do formulário HTML para consulta de senha
O for­mu­lá­rio HTML solicita que você digite uma senha.

O navegador apresenta a vi­su­a­li­za­ção da Web do nosso for­mu­lá­rio HTML de so­li­ci­ta­ção de senha. Digitamos a senha quertz123 definida no script page2.php e, em seguida, clique no botão Submit .

Imagem: A consulta da senha estava correta
O script confirma que a senha inserida está correta.

O navegador da Web nos re­di­re­ci­ona au­to­ma­ti­ca­mente para page2.php enquanto a estrutura de controle if compara nossa entrada com a senha ar­ma­ze­nada. Ela chega ao resultado “qwertz123 == qwertz123 is TRUE” e, em seguida, gera a string The password was correct.

Teste você mesmo para ver o que acontece quando você digita uma senha diferente no campo de entrada.

Ope­ra­do­res lógicos

As condições que você define usando ope­ra­do­res de com­pa­ra­ção na expressão do se cons­tru­ção pode ser combinada com outras condições na mesma expressão se ne­ces­sá­rio. O PHP conta com os ope­ra­do­res lógicos ANDandOR.

Close Bond Weak Bond Des­crip­tion
&& AND Ambas as condições as­so­ci­a­das ao operador devem ser TRUE.
|| OR Apenas uma das duas condições as­so­ci­a­das ao operador deve ser TRUE.

Para combinar condições, você pode usar ope­ra­do­res lógicos de limite fechado e de limite fraco no PHP. No uso prático, o emprego de qualquer uma das duas grafias iso­la­da­mente não produzirá nenhuma distinção per­cep­tí­vel. Se você combinar as duas grafias, verá que OR e || ligam-se mais es­trei­ta­mente do que AND e OR. Além disso, AND and && se ligam mais for­te­mente do que OR and ||. Isso é com­pa­rá­vel à clas­si­fi­ca­ção de ope­ra­do­res conhecida dos ope­ra­do­res ma­te­má­ti­cos (e.g., ponto antes do traço: *liga-se mais es­trei­ta­mente do que+).

A consulta de senha oferece um exemplo prático. Nor­mal­mente, as cre­den­ci­ais de login incluem uma senha secreta e um nome de usuário. O login só será bem-sucedido se ambas as entradas cor­res­pon­de­rem aos dados ar­ma­ze­na­dos no sistema.

Agora, abriremos novamente nosso for­mu­lá­rio de consulta de senha em Page1.php e adi­ci­o­na­re­mos um campo de entrada para o nome de usuário:

<form action="page2.php" method="post">
Username: <input type="text" name="username" /><br />
Password: <input type="password" name="password" /><br />
<input type="submit" value="Submit" />
</shape>
php

Na próxima etapa, pre­ci­sa­mos ajustar a estrutura de controle da cons­tru­ção if . Usamos o operador lógico AND para vincular a condição da consulta de senha a uma condição da consulta de nome de usuário.

<?php
$username = $_POST["username"];
$password = $_POST["password"];
if($username=="John Doe" AND $password=="qwertz123")
    {
    echo "Welcome to the internal area" . $username . "!";
    }
else
    {
    echo "Access failed";
    }
?>
php

Em nosso script page2.php os valores para usernameesenha são obtidas e salvas nas variáveis $usernamee $password. A expressão dentro da se cons­tru­ção agora contém duas condições vin­cu­la­das pelo operador lógico AND. Ambas as condições devem ser atendidas (nome de usuário==“John Doe”e$senha==“qwertz123”) forifpara retornar o resultadoTRUE.

Ao recuperar o nome de usuário do campo de entrada username, podemos usá-lo di­re­ta­mente na saída textual usando a instrução echo statement. Welcome to the internal area é seguido pelo valor em $username. Se uma das duas condições não for atendida, a saída de texto será: Access failed.

Imagem: Consulta de senha com duas condições
O script só confirma a entrada da senha correta se ambas as condições forem atendidas.

Os ope­ra­do­res lógicos podem ser com­bi­na­dos de qualquer maneira. Lembre-se de que AND tem uma pre­ce­dên­cia de operador maior do que OR. Como nas equações ma­te­má­ti­cas, o PHP permite que você use pa­rên­te­ses para indicar a pre­ce­dên­cia.

Como usar loops (while, for)

Às vezes, um script precisa executar uma de­ter­mi­nada seção de código várias vezes antes de executar o restante do código do programa. As lin­gua­gens de pro­gra­ma­ção usam o conceito de loops para isso. Existem três tipos de loops no PHP:

  • while loops
  • do-while loops
  • for loops

while loops

O while loop é o tipo mais simples de loop no PHP. Aqui está a estrutura básica:

while (condition)
    {
    loop step and other instructions
    }
php

O while loop diz ao PHP para executar as subs­ti­tui­ções enquanto a while condição for atendida. Para fazer isso, o in­ter­pre­ta­dor do PHP verifica a condição no início de cada passagem do loop. A execução do código su­bor­di­nado só é in­ter­rom­pida quando a condição while não é mais atendida.

Esse princípio pode ser ilustrado com um script de contagem simples:

<?php
$number = 1;
while ($number <= 10) {
    echo $number++ . "<br />";
    }
?>

O conceito de in­cre­mento foi apre­sen­tado na seção Cal­cu­lando com variáveis deste tutorial. No script sub­se­quente, de­sen­vol­ve­mos esse conceito, mas com um toque diferente. Desta vez, uti­li­za­mos um operador de pós-in­cre­mento. Isso aumenta o valor da variável inteira $number em 1 após cada iteração do loop, ime­di­a­ta­mente após a saída de texto echo . Definimos a condição para o loop while da seguinte forma: $number é maior ou igual a 10. Con­se­quen­te­mente, a instrução echo será executada re­pe­ti­da­mente até que o $number supere o valor 10.

Imagem: O script conta até 10 e, em seguida, interrompe
O script in­cre­menta a variável $num até atingir um valor maior que 10.

O resultado da execução do script é uma string que imprime o valor da variável $number para cada passagem do loop antes de ser in­cre­men­tada. Como resultado, o script conta de 1 a 10 e in­ter­rompe a execução do código assim que a condição while não é mais atendida.

do-while loops

A estrutura do loop do-while é se­me­lhante à do loop while . A única diferença é que a condição não é ve­ri­fi­cada no início de cada passagem do loop, mas somente no final. O esquema básico de um do-while loop é o seguinte:

do {
     loop step and other instructions
     }
    while (condition)
php

Pro­gra­mado como um do-while loop, o script anterior teria a seguinte aparência:

<?php
$number = 1;
do {
    echo $number++ . "<br />";
    }
while ($number <= 10);
?>
php

Nesse caso, o resultado permanece o mesmo. O que há de especial no do-while loop é que ele é executado pelo menos uma vez, mesmo que a condição não seja atendida em nenhuma passagem do loop.

for loops

Em geral, o for loop em um script PHP tem a mesma função que o while loop. No entanto, ao contrário do while loop, o valor inicial, a condição e a instrução são gravados em uma única linha em vez de serem dis­tri­buí­dos em três ou mais linhas. A estrutura básica do for loop é:

for (start value; condition; loop step)
    instructions
php

O exemplo acima poderia ser escrito de forma mais compacta como um for loop:

<?php
for($number = 1; $number <= 10; $number++) {
    echo $number . "<br /> ";
}
?>
php

Primeiro, o valor 1 é definido para $number. Em seguida, o PHP verifica se a condição $number <= 1 é atendida. Se esse for o caso, o loop continua e as ins­tru­ções abaixo do loop são exe­cu­ta­das (aqui a instrução é echo). Quando isso for feito, as etapas do loop serão exe­cu­ta­das. Nesse contexto, a escolha entre pré ou pós-in­cre­mento torna-se ir­re­le­vante, pois essa etapa sempre ocorre antes da saída. Após a conclusão da etapa do loop, a iteração sub­se­quente do loop é iniciada.

Em um for loop, a semente, a condição e a etapa do loop são con­si­de­ra­das com­po­nen­tes opcionais. Em teoria, até mesmo loops vazios são viáveis. No entanto, esses loops seriam re­dun­dan­tes.

Cabe ba­si­ca­mente a você decidir se escreve seus scripts PHP com um for ou um while loop. No entanto, há um argumento para escolher for loops: Quando são usados for loops, você tem uma visão melhor dos dados da estrutura do loop. Isso evita o risco de escrever aci­den­tal­mente um loop infinito que é executado até que a memória do in­ter­pre­ta­dor esteja cheia. Com relação ao exemplo anterior, isso pode acontecer quando você se esquece de in­cre­men­tar o valor da variável $number .

En­tre­tanto, se o loop tiver que ser executado pelo menos uma vez, in­de­pen­den­te­mente da condição, o loopdo-while é o loop a ser usado.

breakandcontinue sta­te­ments

A execução de um while, do-while ou for o loop pode ser in­flu­en­ci­ado pelas de­cla­ra­ções breakecontinue . Use break para in­ter­rom­per o fluxo de um loop em qualquer ponto e continue para pular uma passagem do loop. Ambas as ins­tru­ções estão vin­cu­la­das a uma condição usando if. O exemplo a seguir mostra nosso script de contagem com um break:

<?php
for ($number = 1; $number <= 10; $number++) {
    if ($number == 5) {
      echo "If it is 5, we abort the script!";
      break;
    }
echo $number . "<br /> ";
}
?>
php

No for loop, definimos que o valor da variável $number deve ser aumentado pelo valor 1 em cada rodada do loop, começando em 1, até que a variável atinja o valor 10. Podemos parar esse loop pre­ma­tu­ra­mente usando break assim que $number tiver atingido o valor 5. A cons­tru­ção de linguagem echo só produz os números de 1 a 4.

Imagem: for loop with break
A instrução break in­ter­rompe o loop assim que a condição if é atendida.

Para pular a saída da quinta rodada, mas não in­ter­rom­per todo o fluxo do loop, subs­ti­tuí­mos a instrução break statement with continue:

<?php
for ($number=1; $number <= 10; $number++) {
    if ($number == 5) {
      echo "Let's skip the 5!<br />";
      continue;
    }
echo $number . "<br /> ";
}
?>
php

Em vez do dígito 5, o PHP gera a string de texto Passamos o número 5! definido em se.

Imagem: for loop com instrução continue
O loop for é in­ter­rom­pido por uma instrução continue.

Como executar operações de arquivo

O conteúdo dinâmico da Web é es­tru­tu­rado com base no princípio da separação entre conteúdo e apre­sen­ta­ção. Para isso, as lin­gua­gens de script, como o PHP, oferecem um conjunto di­ver­si­fi­cado de fun­ci­o­na­li­da­des que facilitam a in­te­gra­ção perfeita de conteúdo de fontes de dados externas em arquivos de modelos centrais. Na prática, essas fontes de dados ge­ral­mente são bancos de dados ge­ren­ci­a­dos por sistemas de ge­ren­ci­a­mento como o MySQL. Você pode descobrir como isso funciona em nosso tutorial do MySQL.

Também é possível incluir dados de arquivos. A seguir, mos­tra­re­mos como ler arquivos como uma string em um script PHP e salvar a saída de texto do script em arquivos.

Leitura de arquivos

Para ler o conteúdo de um arquivo, o PHP tem várias funções. Dentre elas, file()efile_get_contents() são par­ti­cu­lar­mente adequados para a tarefa em questão. Enquanto a função file_get_contents() lê todo o conteúdo de um arquivo em uma string, a função file() salva o conteúdo como uma matriz. Cada elemento da matriz cor­res­ponde a uma linha do arquivo. Usar file() facilita a saída de cada linha in­di­vi­du­al­mente.

De­mons­tra­re­mos as operações de arquivo PHP no arquivo de texto example.txt, que colocamos na pasta htdocs do nosso servidor de teste. O arquivo contém quatro linhas de texto fictício:

Lorem ipsum dolor sit amet, con­sec­te­tuer adi­pis­cing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis par­tu­ri­ent montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pel­len­tes­que eu, pretium quis, sem.

Primeiro, pre­ci­sa­mos ler o arquivo inteiro como uma string. Para fazer isso, temos que atribuir o nome do arquivo cor­res­pon­dente como um parâmetro à função file_get_contents() :

file_get_contents('example.txt')

Agora temos a opor­tu­ni­dade de trabalhar com a string que foi lida. Por exemplo, podemos atribuí-la a uma variável e exibi-la como texto no navegador da Web:

<?php
$example = file_get_contents('example.txt');
echo $example;
?>
php
Imagem: O script lê o arquivo example.txt.
O arquivo que foi lido é salvo no navegador.

Na exibição do navegador, podemos ver que a string de texto é gerada sem pa­rá­gra­fos. As quebras de linha do arquivo original não são visíveis. Isso ocorre porque o navegador da Web in­ter­preta a saída de texto do script como código HTML. As quebras definidas nos editores de texto são perdidas.

Para manter a estrutura original, você tem algumas opções. Você pode adicionar a co­di­fi­ca­ção HTML para a quebra de linha (br) no arquivo de origem ma­nu­al­mente usando a função pesquisar e subs­ti­tuir, colocar um <pre> ao redor do conteúdo do arquivo, defina a pro­pri­e­dade CSS white-space: pre -wrap ou use o nl2br() função para sinalizar ao PHP para converter au­to­ma­ti­ca­mente as quebras de linha (novas linhas) para quebras de linha HTML (quebras). Aqui está o código:

<?php
$example = file_get_contents('example.txt');
echo nl2br($example);
?>
php

Se a cons­tru­ção de linguagem echo for usada em com­bi­na­ção com nl2br(), o PHP insere uma quebra de linha HTML antes de cada nova linha.

Imagem: O nl2br() função no aplicativo
nl2br() ajuda a es­tru­tu­rar os dados im­por­ta­dos.

Para gerar as linhas de um arquivo in­di­vi­du­al­mente, você pode usar a função file() . Essa função lê um arquivo, numera todas as linhas que começam com o número 0 e salva seu conteúdo como elementos de uma matriz. Aplicar isso ao nosso exemplo produz o seguinte resultado:

[0] = Lorem ipsum dolor sit amet, con­sec­te­tuer adi­pis­cing elit

[1] = Aenean commodo ligula eget dolor. Aenean massa.

[2] = Cum sociis natoque penatibus et magnis dis par­tu­ri­ent montes, nascetur ridiculus mus.

[3] = Donec quam felis, ultricies nec, pel­len­tes­que eu, pretium quis, sem

Para gerar o res­pec­tivo conteúdo usando echo, basta es­pe­ci­fi­car o número da linha desejada. Por exemplo, o script a seguir nos fornece apenas a primeira linha do arquivo example.txt como saída para o navegador:

<?php
$example = file("example.txt");
echo $example [0];
?>
php
Imagem: O arquivo() função no aplicativo
Selecione qual elemento da matriz você deseja gerar.

Gravar arquivos

O PHP vai além da mera leitura de arquivos, per­mi­tindo também que você leia, crie e modifique arquivos sem esforço.

O uso da função file_put_contents() é um excelente exemplo. Ela requer apenas dois pa­râ­me­tros: o nome do arquivo de destino e os dados, que podem ser uma string ou uma matriz. No script abaixo, um novo arquivo chamado test.txt é criado, contendo a string This is a test!. A inclusão de \r\n garante uma quebra de linha no arquivo.

<?php
file_put_contents("test.txt", "This is a test! \r\n");
echo "test.txt has been created!";
?>
php
Imagem: Operações de arquivo: Write files
O script PHP grava a string -This is a test!- no arquivo test.txt.

Como file_put_contents não fornece nenhuma saída para o navegador, adi­ci­o­na­mos uma instrução echo que nos informa qual ação está sendo executada.

Se já houver um arquivo com o mesmo nome na pasta de destino, ele será subs­ti­tuído. Você pode evitar isso definindo o parâmetro FILE_APPEND:

<?php
file_put_contents("test.txt","The test was successful! \r\n", FILE_APPEND);
echo "test.txt has been updated!";
?>
php

Ao usar file_put_contents() com o parâmetro FILE_APPEND, o novo conteúdo será anexado ao conteúdo existente.

Imagem: Operações de arquivo: Atualizar arquivos
O script PHP adiciona a string: O teste foi bem-sucedido!

O que o PHP grava no arquivo de destino não precisa ne­ces­sa­ri­a­mente ser definido no script. Como al­ter­na­tiva, você pode trans­fe­rir o conteúdo de um arquivo para outro. O script a seguir lê o conteúdo de example.txt e o insere no arquivo test.txt:

<?php
$example = file_get_contents("example.txt");
file_put_contents("test.txt", $example, FILE_APPEND);
echo "test.txt has been updated!";
?>
php
Imagem: Operações de arquivo: Transferir conteúdo de um arquivo para outro
O script PHP lê os dados do arquivo example.txt e os adiciona ao arquivo test.txt.
Ir para o menu principal