-
Notifications
You must be signed in to change notification settings - Fork 61
Expand file tree
/
Copy pathdeclare.xml
More file actions
187 lines (173 loc) · 5.35 KB
/
Copy pathdeclare.xml
File metadata and controls
187 lines (173 loc) · 5.35 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
<?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 la sección
<literal>directive</literal> del bloque <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
-->