-
Notifications
You must be signed in to change notification settings - Fork 106
/
Copy pathbasic-syntax.xml
278 lines (260 loc) · 9.3 KB
/
basic-syntax.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 8ad67ee7a8cc6c9d7a4cf78065cab87bf2e6c08e Maintainer: leonardolara Status: ready --><!-- CREDITS: fabioluciano,geekcom,ae,gabrielsanva,adiel,leonardolara -->
<chapter xml:id="language.basic-syntax" xmlns="http://docbook.org/ns/docbook">
<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><?php</literal> e <literal>?></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><?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><?=</literal>
que é um encurtamento para <code><?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><?php ?></code> e <code><?= ?></code>) para
maximizar a compatibilidade.
</para>
</note>
</para>
<para>
Se um arquivo contiver apenas 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.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
echo "Olá Mundo";
// ... mais código
echo "Última declaração";
// o script termina aqui sem a tag de fechamento do PHP
]]>
</programlisting>
</informalexample>
</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.
<informalexample>
<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>
</informalexample>
Isso funcionará como esperado, porque quando o interpretador PHP encontra a tag de fechamento
?>, 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><?php ?></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>
Exemplos de entrada e saída do interpretador PHP:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
echo 'Isto é um teste';
?>
<?php echo 'Isto é um teste' ?>
<?php echo 'A última tag de fechamento foi omitida';
]]>
</programlisting>
</informalexample>
<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:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
echo 'Isto é um teste'; // Este é um comentário no estilo C++ de uma linha
/* Este é um comentário de várias linhas
mais uma linha de comentário */
echo 'Este é mais um teste';
echo 'Um teste final'; # Este é um comentário no estilo shell de uma linha
?>
]]>
</programlisting>
</informalexample>
</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>// ... ?></literal>
ou <literal># ... ?></literal> SERÁ impresso:
?> sai do modo PHP e retorna ao modo HTML, e
<literal>//</literal> ou <literal>#</literal> não podem influenciar isso.
</simpara>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<h1>Este é um <?php # echo 'simples';?> exemplo</h1>
<p>O cabeçalho acima dirá 'Este é um exemplo'.</p>
]]>
</programlisting>
</informalexample>
</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
-->