Files
archived-doc-pt-br/language/basic-syntax.xml
Leonardo Lara Rodrigues c5ed131710 sync with en rev
2025-04-24 18:55:38 -03:00

291 lines
9.5 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 0e618211e53c66f33762be225a4d57c08ef4b2f7 Maintainer: leonardolara Status: ready --><!-- CREDITS: fabioluciano,geekcom,ae,gabrielsanva,adiel,leonardolara -->
<chapter xml:id="language.basic-syntax" xmlns="http://docbook.org/ns/docbook" annotations="interactive">
<title>Sintaxe Básica</title>
<sect1 xml:id="language.basic-syntax.phptags">
<title>Tags PHP</title>
<para>
Quando o PHP processa um arquivo, ele reconhece as etiquetas de abertura e
fechamento, <literal>&lt;?php</literal> e <literal>?&gt;</literal>, para
definir os limites da execução de código PHP. O conteúdo fora destas
etiquetas é ignorado pelo interpretador PHP, permitindo que o PHP
seja incluído em vários tipos de documentos.
</para>
<para>
Um caractere de espaço em branco (espaço, tabulação ou nova linha) precisa estar presente logo após
<literal>&lt;?php</literal> para assegurar uma separação correta de tokens.
Omitir este espaço resultará em erro de sintaxe.
</para>
<para>
O PHP também inclui a etiqueta <literal>&lt;?=</literal>
que é um encurtamento para <code>&lt;?php echo</code>.
</para>
<para>
<example>
<title>Tags de Abertura e Fechamento do PHP</title>
<programlisting role="php">
<![CDATA[
1. <?php echo 'Se quiser servir código PHP em documentos XHTML ou XML,
use essas tags'; ?>
2. A tag echo curta <?= 'imprima essa string' ?> também pode ser usada.
Ela é equivalente a <?php echo 'imprima essa string' ?>.
3. <? echo 'Este código está entre tags curtas, mas só funcionará '.
'se a diretiva short_open_tag estiver habilitada'; ?>
]]>
</programlisting>
</example>
</para>
<para>
As tags curtas (exemplo 3) estão disponíveis por padrão, mas podem ser desabilitadas
através da diretiva <link linkend="ini.short-open-tag">short_open_tag</link>
no arquivo de configuração &php.ini;, ou estarão desabilitadas por padrão se o PHP
for compilado com a configuração <option>--disable-short-tags</option>.
</para>
<para>
<note>
<para>
Como as tags curtas podem ser desabilitadas, é recomendado usar apenas as tags
normais (<code>&lt;?php ?&gt;</code> e <code>&lt;?= ?&gt;</code>) para
maximizar a compatibilidade.
</para>
</note>
</para>
<para>
Se um arquivo terminar com código PHP, é preferível omitir a tag de fechamento do PHP
no final do arquivo. Isso evita que espaços em branco ou novas linhas
sejam adicionados acidentalmente após a tag de fechamento do PHP, o que pode causar efeitos indesejados,
porque o PHP iniciará o buffer de saída quando não houver intenção
de enviar qualquer saída naquele ponto do script.
</para>
<para>
<example>
<title>Arquivo apenas com código PHP</title>
<programlisting role="php">
<![CDATA[
<?php
echo "Olá Mundo\n";
// ... mais código
echo "Última instrução\n";
// o script termina aqui sem a tag de fechamento do PHP
]]>
</programlisting>
</example>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.phpmode">
<title>Escapando o HTML</title>
<para>
Tudo fora de um par de tags de abertura e fechamento é ignorado pelo
interpretador PHP, o que permite que arquivos PHP tenham conteúdo misto. Isso permite que o PHP
seja incluído em documentos HTML, por exemplo, para criar templates.
</para>
<para>
<example>
<title>Incorporando o PHP no HTML</title>
<programlisting role="php">
<![CDATA[
<p>Isso será ignorado pelo PHP e exibido pelo navegador.</p>
<?php echo 'Enquanto isto vai ser interpretado.'; ?>
<p>Isso também será ignorado pelo PHP e exibido no navegador.</p>
]]>
</programlisting>
</example>
</para>
<para>
Isso funcionará como esperado, porque quando o interpretador PHP encontra a tag de fechamento
?&gt;, ele simplesmente começa a repassar o que quer que encontre (exceto a nova linha
imediata, veja a seção sobre
<link linkend="language.basic-syntax.instruction-separation">separação de instruções</link>),
até encontrar outra tag de abertura, a menos que esteja no meio de uma declaração condicional,
caso em que o interpretador determinará o resultado da
condicional antes de decidir qual caminho tomar.
Veja o próximo exemplo.
</para>
<para>
Usando estruturas com condições
<example>
<title>Escape avançado usando condições</title>
<programlisting role="php">
<![CDATA[
<?php if ($expression == true): ?>
Isso irá aparecer se a expressão for verdadeira.
<?php else: ?>
Senão isso irá aparecer.
<?php endif; ?>
]]>
</programlisting>
</example>
Neste exemplo, o PHP pulará os blocos onde a condição não for satisfeita, mesmo
que os trechos de código estejam fora das tags de abertura e fechamento do PHP,
pois o interpretador PHP pulará os blocos contidos
em uma condição que não foi satisfeita.
</para>
<para>
Para imprimir grandes blocos de texto, sair do modo de interpretação do PHP é
geralmente mais eficiente do que enviar todo o texto usando
<function>echo</function> ou <function>print</function>.
</para>
<para>
<note>
<para>
Se o PHP for incluído no XML ou XHTML, as tags normais
<code>&lt;?php ?&gt;</code> devem ser usadas para manter a conformidade
com os padrões.
</para>
</note>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.instruction-separation">
<title>Separação de instruções</title>
<para>
Como em C ou Perl, o PHP requer que as instruções sejam terminadas
com um ponto e vírgula no final de cada declaração. A tag de fechamento de
um bloco de código PHP implica automaticamente em um ponto e vírgula;
a última linha de um bloco PHP não precisa ser terminada com um
ponto e vírgula. A tag de fechamento do bloco incluirá uma nova linha em seguida, se
estiver presente.
</para>
<para>
<example>
<title>Exemplo mostrando a tag de fechamento incluindo uma nova linha final</title>
<programlisting role="php">
<![CDATA[
<?php echo "Algum texto"; ?>
Sem nova linha
<?= "Mas agora há uma nova linha" ?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Algum textoSem nova linha
Mas agora há uma nova linha
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Exemplos de entrada e saída do interpretador PHP</title>
<programlisting role="php">
<![CDATA[
<?php
echo "Isto é um teste\n";
?>
<?php echo "Isto é um teste\n" ?>
<?php echo "A última tag de fechamento foi omitida\n";
]]>
</programlisting>
</example>
</para>
<para>
<note>
<para>
A tag de fechamento de um bloco PHP no final de um arquivo é opcional e,
em alguns casos, omiti-la é útil ao usar <function>include</function>
ou <function>require</function>, assim espaços em branco indesejados não
ocorrerão no final dos arquivos, e ainda será possível adicionar
cabeçalhos à resposta posteriormente. Isso também é útil ao usar o buffer
de saída, para evitar a inclusão de espaços em branco indesejados
no final das partes geradas pelos arquivos incluídos.
</para>
</note>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.comments">
<title>Comentários</title>
<para>
O PHP suporta comentários no estilo C, C++ e Unix shell (estilo Perl). Por exemplo:
</para>
<para>
<example>
<title>Comentários</title>
<programlisting role="php">
<![CDATA[
<?php
echo "Isto é um teste\n"; // Este é um comentário de uma linha no estilo C++
/* Este é um comentário de várias linhas
mais uma linha de comentário */
echo "Este é mais um teste\n";
echo "Um teste final\n"; # Este é um comentário de uma linha no estilo shell
?>
]]>
</programlisting>
</example>
</para>
<simpara>
Os estilos de comentário de uma linha comentam apenas até o final da
linha ou do bloco atual de código PHP, o que ocorrer primeiro.
Isso significa que o código HTML após <literal>// ... ?&gt;</literal>
ou <literal># ... ?&gt;</literal> SERÁ impresso:
?&gt; sai do modo PHP e retorna ao modo HTML, e
<literal>//</literal> ou <literal>#</literal> não podem influenciar isso.
</simpara>
<para>
<example>
<title>Comentários de uma linha</title>
<programlisting role="php">
<![CDATA[
<h1>Este é um <?php # echo 'simples';?> exemplo</h1>
<p>O cabeçalho acima dirá 'Este é um exemplo'.</p>
]]>
</programlisting>
</example>
</para>
<simpara>
Os comentários no estilo C terminam no primeiro <literal>*/</literal> encontrado.
Certifique-se de não aninhar comentários no estilo C. É fácil cometer esse
erro ao tentar comentar um grande bloco de código.
</simpara>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
/*
echo 'Isto é um teste'; /* Este comentário causará um problema */
*/
?>
]]>
</programlisting>
</informalexample>
</para>
</sect1>
</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
-->