mirror of
https://github.com/php/doc-pt_br.git
synced 2026-03-23 22:52:12 +01:00
455 lines
17 KiB
XML
455 lines
17 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: 876557ae38f6ca5035618f7cea48ca627118b437 Maintainer: leonardolara Status: ready --><!-- CREDITS: thomasgm,ae,adiel,leonardolara -->
|
|
<chapter xml:id="tutorial" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<info><title>Um simples tutorial</title></info>
|
|
|
|
<para>
|
|
Aqui nós iremos mostrar o básico do básico do PHP em um tutorial simples
|
|
e curto. Este texto fala somente sobre a criação de páginas web dinâmicas com
|
|
PHP, embora o PHP não seja apenas capaz de criar páginas web. Veja
|
|
a seção intitulada <link linkend="intro-whatcando">O que o PHP pode
|
|
fazer</link> para mais informações.
|
|
</para>
|
|
<para>
|
|
Fazer páginas com PHP é o mesmo que criar páginas HTML e
|
|
você pode criá-las e editá-las da mesma maneira que
|
|
as páginas HTML comuns são criadas.
|
|
</para>
|
|
|
|
<section xml:id="tutorial.firstpage">
|
|
<info><title>Sua primeira página PHP</title></info>
|
|
<simpara>
|
|
Este tutorial assume que o PHP já está instalado.
|
|
Instruções de instalação podem ser encontradas na
|
|
<link xlink:href="&url.php.downloads;">página de download</link>.
|
|
</simpara>
|
|
<para>
|
|
Crie um novo arquivo chamado <filename>hello.php</filename>
|
|
com o seguinte conteúdo:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<info><title>Nosso primeiro script PHP: <filename>hello.php</filename></title></info>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
echo "Olá, Mundo!";
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<simpara>
|
|
Usando o terminal, navegue até o diretório contendo este arquivo e
|
|
inicie o servidor de desenvolvimento com o seguinte comando:
|
|
</simpara>
|
|
<programlisting role="shell">
|
|
<![CDATA[
|
|
php -S localhost:8000
|
|
]]>
|
|
</programlisting>
|
|
<simpara>
|
|
Use um navegador para acessar o arquivo com a URL do servidor web, terminando
|
|
com a referência ao arquivo <literal>/hello.php</literal>.
|
|
De acordo com o último comando executado, a URL será
|
|
<literal>http://localhost:8000/hello.php</literal>.
|
|
Se tudo estiver configurado corretamente, este arquivo será interpretado pelo PHP
|
|
e a mensagem "Olá, Mundo!" será mostrada no navegador.
|
|
</simpara>
|
|
<simpara>
|
|
O PHP pode ser incorporado em uma página HTML normal. Isso significa que dentro do documento HTML
|
|
podem ser escritas as instruções PHP, conforme demonstrado no exemplo a seguir:
|
|
</simpara>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Teste PHP</title>
|
|
</head>
|
|
<body>
|
|
<?php echo '<p>Olá, Mundo!</p>'; ?>
|
|
</body>
|
|
</html>
|
|
]]>
|
|
</programlisting>
|
|
<simpara>
|
|
Isto resultará na seguinte saída:
|
|
</simpara>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Teste PHP</title>
|
|
</head>
|
|
<body>
|
|
<p>Olá, Mundo!</p>
|
|
</body>
|
|
</html>
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Este programa é realmente simples e você não precisa do
|
|
PHP para criar uma página assim (fixa). Tudo o que ela faz é mostrar:
|
|
<literal>Olá, Mundo!</literal> utilizando a instrução <function>echo</function>.
|
|
Note que o arquivo <emphasis>não precisa ser executável</emphasis>
|
|
ou especial. O servidor web descobre que este arquivo precisa ser interpretado
|
|
pelo PHP por causa da extensão ".php", que o servidor é configurado
|
|
para repassar ao PHP. Pense nisso como um arquivo HTML normal que por acaso possui
|
|
um conjunto de etiquetas especiais disponíveis para você fazer muitas coisas interessantes.
|
|
</para>
|
|
|
|
<para>
|
|
O objetivo do exemplo é mostrar o formato especial das etiquetas do PHP.
|
|
Neste exemplo nós usamos <literal><?php</literal> para indicar que
|
|
a partir daquele ponto entramos no modo PHP. Então nós colocamos a instrução do PHP e saímos do modo PHP
|
|
adicionando a etiqueta de fechamento, <literal>?></literal>. Você pode entrar
|
|
e sair do modo PHP num arquivo HTML desta maneira em qualquer lugar que você queira. Para mais
|
|
detalhes, leia a seção do manual que fala da <link linkend="language.basic-syntax">
|
|
sintaxe básica do PHP</link>.
|
|
</para>
|
|
|
|
<note>
|
|
<info><title>Uma Nota sobre Fins de linha</title></info>
|
|
<para>
|
|
Fins de linha têm pouco significado no HTML, entretanto ainda é uma boa idéia
|
|
fazer o seu HTML ter uma boa aparência e organização através da divisão em linhas. Um
|
|
fim de linha imediatamente após a etiqueta de fechamento
|
|
<literal>?></literal> será removido pelo PHP. Isso pode ser extremamente
|
|
útil quando você está juntando vários blocos de PHP ou arquivos incluídos
|
|
contendo apenas PHP que não deveriam imprimir nada no processo. Ao mesmo tempo
|
|
isso pode ser um pouco confuso. Você pode colocar um espaço depois da tag de fechamento
|
|
<literal>?></literal> para forçar a impressão de um espaço e fim de linha
|
|
ou você pode explicitamente imprimir o fim de linha com um último echo/print de dentro de
|
|
seu bloco PHP.
|
|
</para>
|
|
</note>
|
|
|
|
<note>
|
|
<info><title>Uma Nota sobre os Editores de Texto</title></info>
|
|
<para>
|
|
Há muitos editores de textos e Ambientes de Desenvolvimento Integrado (IDEs - Integrated Development Enviroments)
|
|
que você pode usar para criar, editar e gerenciar arquivos PHP. Uma lista parcial
|
|
destas ferramentas pode ser vista na <link xlink:href="&url.phpeditorlist;">Lista de Editores
|
|
para PHP</link>. Se você gostaria de recomendar um editor, por favor visite a
|
|
página acima e peça ao administrador da página para adicionar o editor à lista. Ter
|
|
um editor que destaca a sintaxe das etiquetas pode ser muito útil.
|
|
</para>
|
|
</note>
|
|
|
|
<note>
|
|
<info><title>Uma Nota sobre os Processadores de Texto</title></info>
|
|
<para>
|
|
Processadores de texto como o StarOffice Writer, Microsoft Word e Abiword não
|
|
são boas escolhas para editar arquivos PHP. Se você deseja usar um desses para
|
|
este script de teste, você precisa verificar se você está salvando o arquivo como <emphasis>texto
|
|
puro</emphasis> ou o PHP não será capaz de ler e executar o script.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
Agora que você criou com sucesso um script simples em PHP, é
|
|
hora de criar o mais famoso dos scripts PHP! Uma chamada à função
|
|
<function>phpinfo</function> e você verá muitas
|
|
informações úteis sobre seu sistema e configurações como as
|
|
<link linkend="language.variables.predefined">Variáveis Predefinidas</link> disponíveis,
|
|
módulos carregados pelo PHP, e as opções de <link linkend="configuration">configuração</link>.
|
|
Tire algum tempo para ver e revisar estas informações importantes.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<info><title>Como obter informações sobre o PHP</title></info>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
phpinfo();
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="tutorial.useful">
|
|
<info><title>Algo Útil</title></info>
|
|
<para>
|
|
Vamos fazer alguma coisa um pouco mais útil agora. Nós iremos checar
|
|
qual é o tipo de navegador que o visitante está utilizando para ver a nossa página.
|
|
Para fazer isto nós iremos checar qual é o valor da string agente que o navegador
|
|
envia como parte de sua requisição HTTP. Esta informação é armazenada em uma <link
|
|
linkend="language.variables">variável</link>. Variáveis sempre começam
|
|
com um símbolo de cifrão no PHP. A variável que nos interessa no momento
|
|
é <varname>$_SERVER['HTTP_USER_AGENT']</varname>.
|
|
</para>
|
|
<note>
|
|
<para>
|
|
<varname>$_SERVER</varname> é uma
|
|
variável especial reservada do PHP que contém todas as informações sobre o servidor web.
|
|
Ela é conhecida como uma superglobal. Veja a página do manual relacionada às
|
|
<link linkend="language.variables.superglobals">superglobais</link>
|
|
para mais informações.
|
|
</para>
|
|
</note>
|
|
<para>
|
|
Para exibir esta variável, nós podemos fazer isto:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<info><title>Imprimindo uma variável (elemento do array)</title></info>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
echo $_SERVER['HTTP_USER_AGENT'];
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Um exemplo de saída desse script poderia ser:
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
Mozilla/5.0 (Linux) Firefox/112.0
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Há muitos <link linkend="language.types">tipos</link> de
|
|
variáveis disponíveis no PHP. No exemplo acima nós imprimimos
|
|
um elemento do <link linkend="language.types.array">array</link>.
|
|
Arrays podem ser muito úteis.
|
|
</para>
|
|
<para>
|
|
<varname>$_SERVER</varname> é somente uma das variáveis que o PHP automaticamente
|
|
disponibiliza para você. A lista destas variáveis pode ser vista na seção
|
|
<link linkend="reserved.variables">Variáveis Reservadas</link>
|
|
do manual ou você pode obter uma lista completa delas olhando
|
|
o resultado da função <function>phpinfo</function> utilizada no
|
|
exemplo da seção anterior.
|
|
</para>
|
|
<para>
|
|
Você pode colocar múltiplas instruções PHP dentro da etiqueta PHP e criar
|
|
pequenos blocos de códigos que fazem muito mais do que um simples 'echo'.
|
|
Por exemplo, se você quiser verificar se o navegador é o Firefox você
|
|
pode fazer isso:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<info><title>Exemplo utilizando <link linkend="language.control-structures">estruturas
|
|
de controle</link> e <link linkend="language.functions">funções</link></title></info>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
|
|
echo 'Você está usando o Firefox.';
|
|
}
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Um exemplo de saída desse script seria:
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
Você está usando o Firefox.
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Aqui nós introduzimos alguns conceitos novos. Nós temos a declaração
|
|
<link linkend="control-structures.if">if</link>.
|
|
Se você está familiarizado com a sintaxe básica usada pela
|
|
linguagem C isto parecerá ser lógico para você. Se não, você
|
|
provavelmente deve ver um livro introdutório de PHP e ler os
|
|
capítulos iniciais, ou ainda ler a seção <link linkend="langref">Referência da
|
|
Linguagem</link> do manual.
|
|
</para>
|
|
<para>
|
|
O segundo conceito que iremos abordar é a chamada à função <function>str_contains</function>.
|
|
A função <function>str_contains</function> vem junto com
|
|
o PHP e busca uma palavra em outra palavra. Neste caso nós estamos
|
|
procurando pelo texto <literal>'Firefox'</literal> dentro de
|
|
<varname>$_SERVER['HTTP_USER_AGENT']</varname>. Se o dado pesquisado
|
|
for encontrado na coleção, a função retorna verdadeiro. Se não, ela
|
|
retorna &false;. Se ela retornar &true;, o <link
|
|
linkend="control-structures.if">if</link> avalia para &true;
|
|
e o código dentro dos {colchetes} é executado. Caso contrário o código não
|
|
roda. Tente criar exemplos similares
|
|
com <link linkend="control-structures.if">if</link>,
|
|
<link linkend="control-structures.else">else</link>, e outras
|
|
funções como <function>strtoupper</function> e
|
|
<function>strlen</function>. Cada página relacionada contém exemplos
|
|
também. Se você estiver incerto em como utilizar funções você deve ler
|
|
as páginas sobre <link linkend="about.prototypes">como ler uma
|
|
definição de função</link> e a seção sobre
|
|
<link linkend="language.functions">funções do PHP</link>.
|
|
</para>
|
|
<para>
|
|
Nós podemos avançar agora e mostrar a você como alternar entre os modos
|
|
PHP mesmo que você esteja executando blocos de códigos:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<info><title>Mesclando entre os modos PHP e HTML</title></info>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox') !== false) {
|
|
?>
|
|
<h3>str_contains() retornou não falso</h3>
|
|
<p>Você está usando Firefox</p>
|
|
<?php
|
|
} else {
|
|
?>
|
|
<h3>str_contains() retornou false</h3>
|
|
<p>Você não está usando Firefox</p>
|
|
<?php
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Um exemplo de saída desse script poderia ser:
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
<h3>str_contains() retornou não falso</h3>
|
|
<p>Você está usando Firefox</p>
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Ao invés de usar a declaração echo do PHP para imprimir a saída dos dados, nós saímos
|
|
do modo do PHP e usamos o HTML normal. O importante a notar aqui
|
|
é que a lógica do script continua intacta. Somente
|
|
um dos blocos HTML será enviado dependendo do
|
|
resultado da chamada à função <function>str_contains</function>. Em outras palavras, depende
|
|
se a palavra <literal>Firefox</literal> for encontrada ou não.
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="tutorial.forms">
|
|
<info><title>Tratando Formulários</title></info>
|
|
<para>
|
|
Uma das características mais fortes do PHP é a forma como ele trata
|
|
formulários HTML. O conceito básico que é importante entender é que qualquer
|
|
elemento de formulário irá automaticamente ficar disponível para seus
|
|
scripts PHP. Por favor leia a seção
|
|
<link linkend="language.variables.external">Variáveis externas
|
|
do PHP</link> para mais informações e exemplos de como usar formulários
|
|
com PHP. Aqui vai um exemplo de formulário HTML:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<info><title>Um simples formulário HTML</title></info>
|
|
<programlisting role="html">
|
|
<![CDATA[
|
|
<form action="action.php" method="post">
|
|
<label for="nome">Seu nome:</label>
|
|
<input name="nome" id="nome" type="text">
|
|
|
|
<label for="idade">Sua idade:</label>
|
|
<input name="idade" id="idade" type="number">
|
|
|
|
<button type="submit">Enviar</button>
|
|
</form>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Não há nada de especial neste formulário. É um formulário HTML comum
|
|
sem nenhuma etiqueta especial de qualquer tipo. Quando o usuário preencher este formulário
|
|
e clicar no botão "Enviar", a página <filename>action.php</filename>
|
|
é chamada. Neste arquivo nós teremos algo como isto:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<info><title>Imprimindo dados de nosso formulário</title></info>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
Olá, <?php echo htmlspecialchars($_POST['nome']); ?>.
|
|
Você tem <?php echo (int) $_POST['idade']; ?> anos de idade.
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Um exemplo de saída deste script seria:
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
Olá, Maria. Você tem 22 anos de idade.
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Para além de <function>htmlspecialchars</function> e
|
|
<literal>(int)</literal>, deve ser óbvio o que o script faz.
|
|
<function>htmlspecialchars</function> transforma caracteres que sejam
|
|
especiais no HTML na sua forma codificada, de forma que não seja possível injetar etiquetas HTML
|
|
ou JavaScript em sua página. O campo "idade", por ser um
|
|
número, pode ser simplesmente <link linkend="language.types.typecasting">convertido</link>
|
|
para um <type>int</type> que automaticamente eliminará qualquer
|
|
caractere estranho. Você também pode fazer o PHP automaticamente fazer isso
|
|
utilizando a extensão <link linkend="ref.filter">filter</link>.
|
|
As variáveis <varname>$_POST['nome']</varname> e <varname>$_POST['idade']</varname>
|
|
são criadas automaticamente pelo PHP. Anteriormente
|
|
utilizamos a superglobal <varname>$_SERVER</varname>; acima
|
|
mostramos que a superglobal <varname>$_POST</varname>
|
|
contém todos os dados POST. Perceba como o
|
|
<emphasis>método</emphasis> (method) do formulário é POST. Se fosse utilizado
|
|
o método <emphasis>GET</emphasis>, os dados do formulário acabariam
|
|
na superglobal <varname>$_GET</varname>.
|
|
Você também pode utilizar a superglobal <varname>$_REQUEST</varname>,
|
|
se não se importar com a origem do dado enviado. Ela
|
|
conterá os dados mesclados das origens GET, POST e COOKIE.
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="tutorial.whatsnext">
|
|
<info><title>O que vem a seguir?</title></info>
|
|
<para>
|
|
Com esse conhecimento deve ser possível entender a maior parte do
|
|
manual e também os vários scripts de exemplo disponíveis nos
|
|
arquivos de exemplo.
|
|
</para>
|
|
<para>
|
|
Para ver várias apresentações que mostram o que mais o PHP pode fazer,
|
|
veja no site sobre Conferências de PHP em:
|
|
<link xlink:href="&url.php.talks;">&url.php.talks;</link>
|
|
</para>
|
|
</section>
|
|
</chapter>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|