1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-23 23:12:09 +01:00
Files
2025-05-06 22:42:56 +02:00

188 lines
5.3 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 5499acf9df7e1338d540bde207acc859792cd139 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="control-structures.declare" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>declare</title>
<?phpdoc print-version-for="declare"?>
<para>
El elemento de lenguaje <literal>declare</literal> se utiliza para añadir directivas de ejecución en un bloque de código. La sintaxis de
<literal>declare</literal> es similar a la sintaxis de otras funciones de control:
<informalexample>
<programlisting>
<![CDATA[
declare (directive)
comandos
]]>
</programlisting>
</informalexample>
</para>
<para>
La expresión <literal>directive</literal> permite controlar la intervención del bloque <literal>declare</literal>.
Actualmente, solo tres directivas son reconocidas:
<simplelist>
<member><link linkend="control-structures.declare.ticks"><literal>ticks</literal></link></member>
<member><link linkend="control-structures.declare.encoding"><literal>encoding</literal></link></member>
<member><link linkend="language.types.declarations.strict"><literal>strict_types</literal></link></member>
</simplelist>
</para>
<para>
Como las directivas son gestionadas durante la compilación del fichero, solo
los literales pueden ser utilizados como valor de estas directivas. Las variables
y constantes no pueden ser utilizadas. Para ilustrar:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
// Esto es correcto:
declare(ticks=1);
// Esto es incorrecto:
const TICK_VALUE = 1;
declare(ticks=TICK_VALUE);
?>
]]>
</programlisting>
</informalexample>
</para>
<para>
La expresión <literal>comandos</literal> del bloque de
<literal>declare</literal> será ejecutada. Cómo será ejecutada,
y qué efectos tendrá, depende de la directiva utilizada en el bloque
<literal>directive</literal>.
</para>
<para>
La estructura <literal>declare</literal> puede también ser utilizada
en el contexto global. Afecta entonces a todo el código que la
sigue (incluso si el fichero con <literal>declare</literal> ha sido
incluido después, no afecta al fichero padre).
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
// Estas declaraciones son idénticas.
// Se puede utilizar esto
declare(ticks=1) {
// script entero aquí
}
// o esto
declare(ticks=1);
// script entero aquí
?>
]]>
</programlisting>
</informalexample>
</para>
<sect2 xml:id="control-structures.declare.ticks">
<title>Ticks</title>
<para>
Un tick es un evento que interviene cada <varname>N</varname>
comandos de bajo nivel tickables, ejecutados por el analizador en el bloque de
<literal>declare</literal>. El valor de <varname>N</varname> es especificado
por la sintaxis <code>ticks=<varname>N</varname></code> en el bloque de
directiva <literal>declare</literal>.
</para>
<para>
No todos los comandos son tickables. Típicamente,
las expresiones de condición y las expresiones de argumentos
no son tickables.
</para>
<para>
Un evento que interviene en cada tick es especificado con la función
<function>register_tick_function</function>. Consulte el ejemplo
a continuación para más detalles. Tenga en cuenta que más de un evento puede
intervenir por tick.
</para>
<para>
<example>
<title>Ejemplo de uso de ticks</title>
<programlisting role="php">
<![CDATA[
<?php
declare(ticks=1);
// Una función llamada en cada evento tick
function tick_handler()
{
echo "tick_handler() llamado\n";
}
register_tick_function('tick_handler'); // causa un evento tick
$a = 1; // causa un evento tick
if ($a > 0) {
$a += 2; // causa un evento tick
print $a; // causa un evento tick
}
?>
]]>
</programlisting>
</example>
</para>
<simpara>
Ver también <function>register_tick_function</function> y
<function>unregister_tick_function</function>.
</simpara>
</sect2>
<sect2 xml:id="control-structures.declare.encoding">
<title>La codificación</title>
<para>
La codificación de un script puede ser especificada por script utilizando la
directiva <literal>encoding</literal>.
<example>
<title>Declaración de una codificación para un script</title>
<programlisting role="php">
<![CDATA[
<?php
declare(encoding='ISO-8859-1');
// el código
?>
]]>
</programlisting>
</example>
</para>
<caution>
<simpara>
Combinada con los espacios de nombres, la única sintaxis válida para declare
es <literal>declare(encoding='...');</literal> donde <literal>...</literal>
es el valor de la codificación. <literal>declare(encoding='...') {}</literal>
generará un error de interpretación en el caso de los espacios de nombres.
</simpara>
</caution>
<para>
Ver también
<link linkend="ini.zend.script-encoding">zend.script_encoding</link>.
</para>
</sect2>
</sect1>
<!-- 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
-->