1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-28 01:12:20 +01:00
Files
archived-doc-es/language/control-structures/declare.xml
Pedro Antonio Gil Rodríguez de5c63a90e Actualización a la última versión
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@338503 c90b9560-bf6c-de11-be94-00142212c4b1
2016-01-15 14:45:08 +00:00

254 lines
6.5 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 142e1a0eb7e1ece31b225808f21369cc7c36fb10 Maintainer: seros 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><literal>declare</literal></title>
<?phpdoc print-version-for="declare"?>
<para>
El constructor <literal>declare</literal> es usado para
fijar directivas de ejecución para un bloque de código.
La sintaxis de <literal>declare</literal> es similar a
la sintaxis de otros constructores de control de flujo:
<informalexample>
<programlisting>
<![CDATA[
declare (directive)
statement
]]>
</programlisting>
</informalexample>
</para>
<para>
La sección <literal>directive</literal> permite que el
comportamiento de <literal>declare</literal> sea
configurado.
Actualmente, solamente están reconocidas tres directivas:
<literal>ticks</literal> (véase abajo para más
información sobre la directiva
<link linkend="control-structures.declare.ticks">ticks</link>),
<literal>encoding</literal> (véase abajo para más
información sobre la directiva
<link linkend="control-structures.declare.encoding">encoding</link>)
y <literal>strict_types</literal> (para más infomación,
véase la sección
<link linkend="functions.arguments.type-declaration.strict">strict</link>
de la página de Argumentos de funciones)
</para>
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>5.3.0</entry>
<entry>Se añadió la directiva encoding</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>Se añadió la directiva strict_types</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
<para>
Ya que las directivas se manejan mientras el fichero está siendo compilado, solamente se pueden
proporcionar literales como valores de directivas. No se pueden emplear variables ni constantes.
Como ejemplo:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
// Esto es válido:
declare(ticks=1);
// Esto no es válido:
const TICK_VALUE = 1;
declare(ticks=TICK_VALUE);
?>
]]>
</programlisting>
</informalexample>
</para>
<para>
La parte <literal>statement</literal> del
bloque <literal>declare</literal> será ejecutada - como
se ejecuta y que efectos secundarios ocurran durante la ejecución
puede depender de la directiva fijada en el
bloque <literal>directive</literal>.
</para>
<para>
El constructor <literal>declare</literal> también se puede utilizar en el alcance
global, afectando a todo el código que le sigue (sin embargo, si el archivo con el
<literal>declare</literal> fue incluido entonces no afectará al archivo
padre).
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
// estos son lo mismo:
// se puede usar ésto:
declare(ticks=1) {
// script entero aquí
}
// o se puede usar ésto:
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 ocurre para cada
sentencia tickable <varname>N</varname> de bajo nivel ejecutada
por el intérprete dentro del bloque <literal>declare</literal>.
El valor para <varname>N</varname> se especifica
usando <code>ticks=<varname>N</varname></code>
dentro del bloque de <literal>declare</literal>
de la sección <literal>directive</literal>.
</para>
<para>
No todas las sentencias son tickable. Por lo general, expresiones
de condición y expresiones de argumento no son tickables.
</para>
<para>
Los eventos que ocurren en cada tick se especifican mediante la
<function>register_tick_function</function>. Ver el ejemplo
abajo para más detalles. Tener en cuenta que más de un evento puede
ocurrir por cada tick.
</para>
<para>
<example>
<title>Ejemplo de uso del tick</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');
$a = 1;
if ($a > 0) {
$a += 2;
print($a);
}
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Ejemplo de uso de ticks</title>
<programlisting role="php">
<![CDATA[
<?php
function tick_handler()
{
echo "tick_handler() llamado\n";
}
$a = 1;
tick_handler();
if ($a > 0) {
$a += 2;
tick_handler();
print($a);
tick_handler();
}
tick_handler();
?>
]]>
</programlisting>
</example>
</para>
<simpara>
Véase también <function>register_tick_function</function> y
<function>unregister_tick_function</function>.
</simpara>
</sect2>
<sect2 xml:id="control-structures.declare.encoding">
<title>Encoding</title>
<para>
Una codificación de script puede ser especificada para cada script usando la directiva encoding.
<example>
<title>Declarando un encoding para el script</title>
<programlisting role="php">
<![CDATA[
<?php
declare(encoding='ISO-8859-1');
// código aquí
?>
]]>
</programlisting>
</example>
</para>
<caution>
<simpara>
Cuando se combina con espacios de nombres, la única sintaxis legal para declarar
es <literal>declare(encoding='...');</literal> donde <literal>...</literal>
es el valor del encoding. <literal>declare(encoding='...') {}</literal>
resultará en un error de análisis cuando se combina con espacios de nombres.
</simpara>
</caution>
<para>
El valor declarado de encoding es ignorado en PHP 5.3 a menos que php esté compilado con
<literal>--enable-zend-multibyte</literal>.
</para>
<para>
Tener en cuenta que PHP no expone si <literal>--enable-zend-multibyte</literal> fue
utilizado para compilar PHP que no sea por <function>phpinfo</function>.
</para>
<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
-->