mirror of
https://github.com/php/doc-es.git
synced 2026-03-24 07:22:16 +01:00
333 lines
12 KiB
XML
333 lines
12 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: 2fd5de559f683e55b33367e74c5b7a4d7072ceb7 Maintainer: seros Status: ready -->
|
|
<!-- Reviewed: yes Maintainer: seros -->
|
|
<chapter xml:id="language.basic-syntax" xmlns="http://docbook.org/ns/docbook">
|
|
<title>Sintaxis básica</title>
|
|
<sect1 xml:id="language.basic-syntax.phptags">
|
|
<title>Etiquetas de PHP</title>
|
|
<para>
|
|
Cuando PHP analiza un fichero, busca las etiquetas de apertura y cierre,
|
|
que son <literal><?php</literal> y <literal>?></literal>, y que indican a PHP
|
|
dónde empezar y finalizar la interpretación del código. Este mecanismo permite
|
|
embeber a PHP en todo tipo de documentos, ya que todo
|
|
lo que esté fuera de las etiquetas de apertura y cierre de PHP será ignorado
|
|
por el analizador.
|
|
</para>
|
|
<para>
|
|
PHP también permite la etiqueta de apertura abreviada <literal><?</literal>
|
|
(la cual está desaconsejada debido a que sólo está disponible si se habilita con
|
|
la directiva <link linkend="ini.short-open-tag">short_open_tag</link>
|
|
del fichero de configuración &php.ini;, o si PHP se configuró con la opción
|
|
<option>--enable-short-tags</option>).
|
|
</para>
|
|
<para>
|
|
Si un fichero contiene solamente código de PHP, es preferible omitir la etiqueta de cierre de PHP
|
|
al final del mismo. Así se previene la adición de espacios en blanco o nuevas líneas
|
|
accidentales después de la etiqueta de cierre, lo cual causaría efectos no deseados
|
|
debido a que PHP comenzará la salida del búfer cuando no había intención por parte
|
|
del programador de enviar ninguna salida en ese punto del script.
|
|
<informalexample>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
echo "Hola mundo";
|
|
|
|
// ... más código
|
|
|
|
echo "Última sentencia";
|
|
|
|
// el script finaliza aquí sin etiqueta de cierre de PHP
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
</para>
|
|
<para>
|
|
<table>
|
|
&reftitle.changelog;
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>&Version;</entry>
|
|
<entry>&Description;</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>7.0.0</entry>
|
|
<entry>
|
|
Se eliminaron de PHP las etiquetas de ASP <code><%</code>,
|
|
<code>%></code>, <code><%=</code>, y la etiqueta de script
|
|
<code><script language="php"></code>.
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>5.4.0</entry>
|
|
<entry>
|
|
La etiqueta <?= siempre está disponible independientemente del ajuste ini short_open_tag.
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</para>
|
|
</sect1>
|
|
<sect1 xml:id="language.basic-syntax.phpmode">
|
|
<title>Salir de HTML</title>
|
|
<para>
|
|
Cualquier cosa fuera de un par de etiquetas de apertura y cierre es ignorado por el
|
|
intérprete de PHP, lo que permite que los ficheros de PHP tengan contenido mixto. Esto hace
|
|
que PHP pueda ser embebido en documentos HTML para, por ejemplo, crear plantillas.
|
|
<informalexample>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<p>Esto va a ser ignorado por PHP y mostrado por el navegador.</p>
|
|
<?php echo 'Mientras que esto va a ser interpretado.'; ?>
|
|
<p>Esto también será ignorado por PHP y mostrado por el navegador.</p>
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
Este ejemplo funciona como estaba previsto, porque cuando PHP intercepta las etiquetas de cierre
|
|
?>, simplemente comienza a imprimir cualquier cosa que encuentre (a excepción de una nueva línea inmediatamente después; véase la
|
|
<link linkend="language.basic-syntax.instruction-separation">separación de instrucciones</link>)
|
|
hasta que dé con otra etiqueta de apertura a menos que se encuentre en mitad de una sentencia
|
|
condicional, en cuyo caso el intérprete determinará el resultado de la
|
|
condición antes de tomar una decisión de qué es lo que tiene que saltar.
|
|
Vea el siguiente ejemplo.
|
|
</para>
|
|
<para>
|
|
Empleo de estructuras con condiciones
|
|
<example>
|
|
<title>Salida avanzada usando condiciones</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php if ($expresión == true): ?>
|
|
Esto se mostrará si la expresión es verdadera.
|
|
<?php else: ?>
|
|
En caso contrario se mostrará esto.
|
|
<?php endif; ?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
En este ejemplo, PHP saltará los bloques donde la condición no se cumpla, incluso
|
|
si están fuera de las etiquetas de apertura/cierre de PHP, los saltará según
|
|
la condición debido a que el intérprete salta los bloques contenidos
|
|
dentro de una condición que no se cumpla.
|
|
</para>
|
|
<para>
|
|
Para imprimir bloques de texto grandes, es más eficiente abandonar el modo
|
|
intérprete de PHP que enviar todo el texto a través de
|
|
<function>echo</function> o <function>print</function>.
|
|
</para>
|
|
<para>
|
|
En PHP 5 existen hasta cinco pares de etiquetas de apertura y cierre diferentes,
|
|
dependiendo de la configuración de PHP. Dos de estas,
|
|
<code><?php ?></code> y
|
|
<code><script language="php"> </script></code>, siempre están
|
|
disponibles. También existe una etiqueta echo abreviada, <code><?= ?></code>,
|
|
que siempre está disponible en PHP 5.4.0 y posteriores.
|
|
</para>
|
|
<para>
|
|
Las otras dos son las etiquetas abreviadas y las etiquetas al estilo de
|
|
<productname>ASP</productname>. De por sí, aunque algunos encuentran prácticas,
|
|
las etiquetas abreviadas y las etiquetas al estilo <productname>ASP</productname> son menos
|
|
portables, no recomendándose por lo general.
|
|
<note>
|
|
<para>
|
|
Observe también que si se está embebiendo PHP dentro de XML o XHTML
|
|
será necesario usar las etiquetas <?php ?> para seguir los
|
|
estándares.
|
|
</para>
|
|
</note>
|
|
</para>
|
|
<para>
|
|
PHP 7 elimina el soprte para las etiquetas <productname>ASP</productname> y
|
|
<code><script language="php"></code>. Por tanto, para maximizar la compatibilidad,
|
|
se recomienda solamente el empleo de <code><?php ?></code> y <code><?= ?></code>
|
|
al escribir código de PHP.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Etiquetas de apertura y de cierre de PHP</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
1. <?php echo 'si quiere proveer código de PHP a documentos XHTML o XML,
|
|
emplee estas etiquetas'; ?>
|
|
|
|
2. Puede emplear la etiqueta echo abreviada para <?= 'imprimir esta cadena' ?>.
|
|
Siempre está habilitada en PHP 5.4.0 y posterior, y es equivalente a
|
|
<?php echo 'imprimir esta cadena' ?>.
|
|
|
|
3. <? echo 'este código está dentro de etiquetas abreviadas, aunque sólo '.
|
|
'funcionará si short_open_tag está habilitada'; ?>
|
|
|
|
4. <script language="php">
|
|
echo 'a algunos editores (como FrontPage) no les gustan
|
|
las instruciones de procesamiento dentro de estas etiquetas';
|
|
</script>
|
|
Esta sintaxis ha sido eliminada en PHP 7.0.0.
|
|
|
|
5. <% echo 'Opcionalmente, se pueden emplear las etiquetas al estilo de ASP'; %>
|
|
El código dentro de estas etiquetas <%= $variable; %> es una abreviatura para este código <% echo $variable; %>
|
|
Ambas sintaxis han sido eliminadas en PHP 7.0.0.
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Las etiquetas abreviadas (ejemplo tres) solamente están disponibles cuando
|
|
se activan mediante la directiva <link linkend="ini.short-open-tag">short_open_tag</link>
|
|
del fichero de configuración &php.ini; o si PHP se configuró con la opción
|
|
<option>--enable-short-tags</option>.
|
|
</para>
|
|
<para>
|
|
Las etiquetas de estilo de <productname>ASP</productname> (ejemplo cinco) solamente están
|
|
disponibles cuando se activan mediante la
|
|
directiva <literal>asp_tags</literal> del fichero de configuración
|
|
&php.ini;. Han sido eliminadas en PHP 7.0.0.
|
|
</para>
|
|
<para>
|
|
<note>
|
|
<para>
|
|
Debe evitarse el uso de etiquetas abreviadas cuando se desarrollen aplicaciones
|
|
o bibliotecas que estén pensadas para su redistribución o despliegue en
|
|
servidores de PHP que no estén bajo su control, porque puede que las etiquetas abreviadas
|
|
no estén admitidas en un servidor determinado. Por portabilidad y
|
|
código redistribuible, asegúrese de no usar etiquetas abreviadas.
|
|
</para>
|
|
</note>
|
|
<note>
|
|
<para>
|
|
En PHP 5.2 y anteriores, el analizador no permite que un fichero
|
|
contenga únicamente la etiqueta de apertura <literal><?php</literal>.
|
|
A partir de PHP 5.3 sí se permite, siempre que existan uno o más caracteres espacio en
|
|
blanco después de la etiqueta de apertura.
|
|
</para>
|
|
</note>
|
|
<note>
|
|
<para>
|
|
Desde PHP 5.4, la etiqueta de echo abreviada <literal><?=</literal> siempre es aceptada y
|
|
válida, independientemente de la configuración de <link linkend="ini.short-open-tag">short_open_tag</link>.
|
|
</para>
|
|
</note>
|
|
</para>
|
|
</sect1>
|
|
<sect1 xml:id="language.basic-syntax.instruction-separation">
|
|
<title>Separación de instrucciones</title>
|
|
<para>
|
|
Como en C o en Perl, PHP requiere que las instrucciones terminen
|
|
en punto y coma al final de cada sentencia. La etiqueta de cierre
|
|
de un bloque de código de PHP automáticamente implica un punto y coma; no
|
|
es necesario usar un punto y coma para cerrar la última línea de un
|
|
bloque de PHP. La etiqueta de cierre del bloque incluirá la nueva línea
|
|
final inmediata si está presente.
|
|
<informalexample>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
echo 'Esto es una prueba';
|
|
?>
|
|
|
|
<?php echo 'Esto es una prueba' ?>
|
|
|
|
<?php echo 'Hemos omitido la última etiqueta de cierre';
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
<note>
|
|
<para>
|
|
La etiqueta de cierre de un bloque de PHP es opcional al final de un fichero,
|
|
y en algunos casos es útil omitirla cuando se usa <function>include</function>
|
|
o <function>require</function>, para que no se produzcan espacios
|
|
en blanco al final de los ficheros, pudiéndose aún añadir así
|
|
cabeceras para la respuesta posterior. También es práctico si se utiliza la salida
|
|
del buffer y no se desean espacios en blanco no deseados
|
|
al final de las partes generadas por ficheros incluídos.
|
|
</para>
|
|
</note>
|
|
</para>
|
|
</sect1>
|
|
<sect1 xml:id="language.basic-syntax.comments">
|
|
<title>Comentarios</title>
|
|
<para>
|
|
PHP admite comentarios al estilo de 'C', 'C++' y de consola de Unix (estilo de Perl). Por ejemplo:
|
|
|
|
<informalexample>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
echo 'Esto es una prueba'; // Esto es un comentario al estilo de c++ de una sola línea
|
|
/* Esto es un comentario multilínea
|
|
y otra lína de comentarios */
|
|
echo 'Esto es otra prueba';
|
|
echo 'Una prueba final'; # Esto es un comentario al estilo de consola de una sola línea
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
</para>
|
|
<simpara>
|
|
Los comentarios al estilo de "una sola línea" solo comentan hasta el final
|
|
de la línea o del bloque actual de código de PHP, lo primero que suceda.
|
|
Esto implica que el código HTML después de <literal>// ... ?></literal>
|
|
o <literal># ... ?></literal> SERÁ impreso:
|
|
?> sale del modo PHP y vuelve al modo HTML, por lo que
|
|
<literal>//</literal> o <literal>#</literal> no pueden influir en eso.
|
|
Si la directiva de configuración <literal>asp_tags</literal>
|
|
está activada, actúa igual que <literal>// %></literal> y
|
|
<literal># %></literal>.
|
|
Sin embargo, la etiqueta <literal></script></literal> no sale del modo PHP en
|
|
un comentario de una sola línea.
|
|
</simpara>
|
|
<para>
|
|
<informalexample>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<h1>Esto es un <?php # echo 'simple';?> ejemplo</h1>
|
|
<p>El encabezado anterior dirá 'Esto es un ejemplo'.</p>
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
</para>
|
|
<simpara>
|
|
Los comentarios al estilo de 'C' finalizan con el primer <literal>*/</literal> que se encuentre.
|
|
Asegúrese de no anidar comentarios al estilo de 'C'. Es muy fácil cometer este
|
|
error cuando se intenta comentar un bloque grande de código.
|
|
</simpara>
|
|
<para>
|
|
<informalexample>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
/*
|
|
echo 'Esto es una prueba'; /* Este comentario causará un 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
|
|
-->
|