-
Notifications
You must be signed in to change notification settings - Fork 59
Expand file tree
/
Copy pathbasic-syntax.xml
More file actions
293 lines (276 loc) · 9.53 KB
/
basic-syntax.xml
File metadata and controls
293 lines (276 loc) · 9.53 KB
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
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 0e618211e53c66f33762be225a4d57c08ef4b2f7 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<!-- CREDITS: DavidA -->
<chapter xml:id="language.basic-syntax" xmlns="http://docbook.org/ns/docbook" annotations="interactive">
<title>La sintaxis básica</title>
<sect1 xml:id="language.basic-syntax.phptags">
<title>Etiquetas PHP</title>
<para>
Cuando PHP procesa un fichero, reconoce las etiquetas de apertura y
de cierre, <literal><?php</literal> y <literal>?></literal>, para
definir los límites de la ejecución del código PHP. El contenido fuera de
las etiquetas es ignorado por el analizador PHP, permitiendo a PHP integrarse
de manera transparente en diversos tipos de documentos.
</para>
<para>
Un carácter de espacio (espacio, tabulación, o nueva línea) debe seguir
<literal><?php</literal> para asegurar una separación correcta de los tokens.
Omitir este espacio en blanco resultará en un error de sintaxis.
</para>
<para>
PHP incluye también la etiqueta corta echo <literal><?=</literal>,
que es un atajo para <code><?php echo</code>.
</para>
<para>
<example>
<title>Etiquetas de apertura y cierre PHP</title>
<programlisting role="php">
<![CDATA[
1. <?php echo 'Si se desea integrar código PHP en documentos XHTML o XML, utilice estas etiquetas'; ?>
2. Se puede utilizar la etiqueta corta para <?= 'escribir este texto' ?>.
Es equivalente a <?php echo 'escribir este texto' ?>.
3. <? echo 'este código está entre etiquetas cortas'; ?>
El siguiente código <?= 'texto' ?> es un atajo para <? echo 'texto' ?>
]]>
</programlisting>
</example>
</para>
<para>
Las etiquetas cortas (tercer ejemplo) están disponibles por omisión,
pero pueden ser desactivadas a través de la opción
<link linkend="ini.short-open-tag">short_open_tag</link>
del fichero de configuración &php.ini;, o están desactivadas por omisión si PHP
es compilado con la opción <option>--disable-short-tags</option>.
</para>
<para>
<note>
<para>
Como las etiquetas cortas pueden ser desactivadas, se recomienda utilizar
solo las etiquetas normales (<code><?php ?></code> y
<code><?= ?></code>) para maximizar la compatibilidad.
</para>
</note>
</para>
<para>
Si un fichero termina con código PHP, es preferible no colocar
la etiqueta de cierre al final del fichero. Esto permite evitar olvidar
un espacio o una nueva línea después de la etiqueta de cierre de PHP, lo cual
causaría efectos no deseados ya que PHP comenzará a mostrar la salida,
lo cual no es a menudo el caso deseado.
</para>
<para>
<example>
<title>Fichero que contiene solo código PHP</title>
<programlisting role="php">
<![CDATA[
<?php
echo "Hola mundo\n";
// ... más código
echo "Última instrucción\n";
// el script termina aquí, sin la etiqueta de cierre PHP
]]>
</programlisting>
</example>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.phpmode">
<title>Escape desde HTML</title>
<para>
Todo lo que se encuentra fuera de un par de etiquetas de apertura/cierre
es ignorado por el analizador PHP, lo que permite tener ficheros PHP
mezclando contenidos. Esto permite a PHP estar contenido en documentos
HTML, para crear por ejemplo plantillas.
</para>
<para>
<example>
<title>Integrar PHP en HTML</title>
<programlisting role="php">
<![CDATA[
<p>Esto será ignorado por PHP y mostrado en el navegador.</p>
<?php echo 'Mientras que esto será analizado por PHP.'; ?>
<p>Esto también será ignorado por PHP y mostrado en el navegador.</p>
]]>
</programlisting>
</example>
</para>
<para>
Esto funciona como se espera porque cuando el intérprete PHP encuentra
la etiqueta de cierre ?>, simplemente comienza a mostrar lo que encuentra (a excepción de la nueva línea que es inmediatamente seguida: ver
la <link linkend="language.basic-syntax.instruction-separation">instrucción
de separación</link>) hasta que encuentre otra etiqueta de apertura
incluso si PHP se encuentra en medio de una instrucción condicional, en cuyo caso,
el intérprete determinará la condición a tener en cuenta antes de tomar una decisión sobre lo que debe ser mostrado.
Ver el siguiente ejemplo.
</para>
<para>
Uso de estructuras con condiciones
<example>
<title>Escape avanzado usando condiciones</title>
<programlisting role="php">
<![CDATA[
<?php if ($expression == true): ?>
Esto será mostrado si la expresión es verdadera.
<?php else: ?>
De lo contrario, esto será mostrado.
<?php endif; ?>
]]>
</programlisting>
</example>
En este ejemplo, PHP ignorará los bloques donde la condición no se cumpla,
incluso si están fuera de las etiquetas de apertura/cierre de PHP. PHP
los ignorará según la condición ya que el intérprete PHP pasará
los bloques que contienen lo que no se cumple por la condición.
</para>
<para>
Para mostrar grandes bloques de texto, es más eficiente salir
del modo de análisis de PHP en lugar de enviar el texto a través de la función
<function>echo</function> o
<function>print</function>.
</para>
<para>
<note>
<para>
Si PHP está integrado en un documento XML o XHTML, la etiqueta PHP
estándar <code><?php ?></code> debe ser utilizada para mantener la conformidad con los estándares.
</para>
</note>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.instruction-separation">
<title>Separación de instrucciones</title>
<para>
Al igual que en C o en Perl, PHP requiere que las instrucciones sean terminadas
por un punto y coma al final de cada instrucción. La etiqueta
de cierre de un bloque de código PHP implica automáticamente un punto y coma;
por lo tanto, no es necesario utilizar un punto y coma
para terminar la última línea de un bloque PHP. La etiqueta de cierre
de un bloque incluye el carácter de nueva línea seguido inmediatamente si uno
está presente.
</para>
<para>
<example>
<title>Ejemplo que muestra que la etiqueta de cierre incluye la nueva línea que sigue</title>
<programlisting role="php">
<![CDATA[
<?php echo "Algún texto"; ?>
Sin nueva línea
<?= "Pero nueva línea ahora" ?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Algún textoSin nueva línea
Pero nueva línea ahora
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Ejemplos de entrada y salida del analizador PHP</title>
<programlisting role="php">
<![CDATA[
<?php
echo 'Esto es una prueba\n';
?>
<?php echo 'Esto es una prueba\n' ?>
<?php echo 'Omitimos la última etiqueta de cierre\n';
]]>
</programlisting>
</example>
</para>
<para>
<note>
<para>
La etiqueta de cierre de un bloque PHP al final de un fichero es opcional,
y a veces es útil omitirla cuando se utiliza la función
<function>include</function> o
la función <function>require</function>,
ya que los espacios no deseados no aparecerán al final de los ficheros, y así,
siempre se podrán agregar encabezados a la respuesta más tarde. Esto es útil
también si se desea utilizar la visualización del búfer y no se desea ver espacios en blanco añadidos al final de las partes generadas por los ficheros
incluidos.
</para>
</note>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.comments">
<title>Comentarios</title>
<para>
PHP soporta los comentarios de tipo C, C++ y Shell Unix (también
llamado estilo Perl). Por ejemplo :
</para>
<para>
<example>
<title>Comentarios</title>
<programlisting role="php">
<![CDATA[
<?php
echo 'Esto es una prueba\n'; // Esto es un comentario de una sola línea, estilo c++
/* Esto es un comentario de
varias líneas */
echo 'Esto es otra prueba\n';
echo 'Y una prueba final\n'; # Esto es un comentario de una sola línea estilo shell
?>
]]>
</programlisting>
</example>
</para>
<simpara>
Los comentarios de una sola línea solo comentan hasta el final
de la línea del bloque PHP actual.
Esto significa que el código HTML después de <literal>// ... ?></literal>
o después de <literal># ... ?></literal> SERÁ mostrado:
?> terminará el modo PHP y volverá al modo HTML, y
<literal>//</literal> o <literal>#</literal> no influirá en ello.
</simpara>
<para>
<example>
<title>Los comentarios van hasta el final de la línea</title>
<programlisting role="php">
<![CDATA[
<h1>Esto es un ejemplo <?php # echo 'simple';?></h1>
<p>La línea anterior mostrará 'Esto es un ejemplo'.</p>
]]>
</programlisting>
</example>
</para>
<simpara>
Los comentarios estilo 'C' comentan hasta que se encuentre el primer <literal>*/</literal>.
Se debe tener cuidado con los comentarios estilo 'C' anidados en grandes bloques cuando se comentan.
</simpara>
<para>
<example>
<title>Los comentarios de tipo C</title>
<programlisting role="php">
<![CDATA[
<?php
/*
echo 'Esto es una prueba'; /* Este comentario causará un problema */
*/
?>
]]>
</programlisting>
</example>
</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:
-->