Files
archived-doc-pt-br/chapters/tutorial.xml
Leonardo Lara Rodrigues 452d861bfb sync with en rev
2025-11-04 18:29:39 -03:00

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>&lt;?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>?&gt;</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>?&gt;</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>?&gt;</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
-->