mirror of
https://github.com/php/doc-de.git
synced 2026-04-28 01:13:12 +02:00
192 lines
5.5 KiB
XML
192 lines
5.5 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: 5499acf9df7e1338d540bde207acc859792cd139 Maintainer: sammywg Status: ready -->
|
|
<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>
|
|
Das <literal>declare</literal>-Konstrukt wird verwendet, um
|
|
Ausführungsdirektiven für einen Codeblock festzulegen. Die Syntax von
|
|
<literal>declare</literal> ist ähnlich wie die Syntax anderer
|
|
Ablauf-Kontrollstrukturen:
|
|
<informalexample>
|
|
<programlisting>
|
|
<![CDATA[
|
|
declare (directive)
|
|
statement
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
</para>
|
|
<para>
|
|
Die <literal>directive</literal>-Sektion erlaubt es, das Verhalten des
|
|
<literal>declare</literal>-Blocks anzugeben.
|
|
Aktuell werden nur drei Direktiven unterstützt:
|
|
<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>
|
|
Da Direktiven behandelt werden, wenn die Datei kompiliert wird, dürfen nur
|
|
Literale als Direktiven-Werte angegeben werden. Variable und Konstante können
|
|
nicht verwendet werden. Zur Veranschaulichung:
|
|
<informalexample>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// Dies ist erlaubt:
|
|
declare(ticks=1);
|
|
|
|
// Dies ist ungültig:
|
|
const TICK_VALUE = 1;
|
|
declare(ticks=TICK_VALUE);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
</para>
|
|
<para>
|
|
Der <literal>statement</literal>-Teil des <literal>declare</literal>-Blocks
|
|
wird ausgeführt - wie genau die Ausführung aussieht und welche Seiteneffekte
|
|
während der Ausführung auftreten können, ist abhängig von der im
|
|
<literal>directive</literal>-Block gesetzten Direktive.
|
|
</para>
|
|
<para>
|
|
Das <literal>declare</literal>-Konstrukt kann außerdem im globalen
|
|
Sichtbarkeitsbereich verwendet werden, es hat dann Auswirkungen auf den
|
|
gesamten folgenden Code (wird die Datei mit der
|
|
<literal>declare</literal>-Anweisung inkludiert, hat die Anweisung jedoch
|
|
keine Auswirkung auf das einbindende File).
|
|
<informalexample>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// dies sind gleichwertige Schreibweisen:
|
|
|
|
// Sie können diese Schreibweise verwenden:
|
|
declare(ticks=1) {
|
|
// hier das vollständige Skript einfügen
|
|
}
|
|
|
|
// oder diese:
|
|
declare(ticks=1);
|
|
// hier das vollständige Skript einfügen
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
</para>
|
|
|
|
<sect2 xml:id="control-structures.declare.ticks">
|
|
<title>Ticks</title>
|
|
<para>
|
|
Ein Tick ist ein Event, das für alle <varname>N</varname> Low-Level-Statements
|
|
auftritt, die vom Parser innerhalb des <literal>declare</literal>-Blocks
|
|
ausgeführt werden.
|
|
Der Wert für <varname>N</varname> wird durch die Verwendung von
|
|
<code>ticks=<varname>N</varname></code> innerhalb der
|
|
<literal>directive</literal>-Sektion des <literal>declare</literal>-Blocks
|
|
angegeben.
|
|
</para>
|
|
<para>
|
|
Nicht alle Statements führen zu einem Tick-Event. So etwa Konditionen
|
|
und Argumente.
|
|
</para>
|
|
<para>
|
|
Das/die bei jedem Tick auftretenden Event(s) werden durch die Verwendung
|
|
der Funktion <function>register_tick_function</function> angegeben.
|
|
Betrachten Sie das folgende Beispiel für mehr Details. Beachten Sie, dass
|
|
mehr als ein Event bei jedem Tick auftreten kann.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Tick Nutzungsbeispiel</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
declare(ticks=1);
|
|
|
|
// Funktion, welche bei jeden Tick-Event aufgerufen wird
|
|
function tick_handler()
|
|
{
|
|
echo "tick_handler() aufgerufen\n";
|
|
}
|
|
|
|
register_tick_function('tick_handler'); // löst ein Tick-Ereignis aus
|
|
|
|
$a = 1; // löst ein Tick-Ereignis aus
|
|
|
|
if ($a > 0) {
|
|
$a += 2; // löst ein Tick-Ereignis aus
|
|
print $a; // löst ein Tick-Ereignis aus
|
|
}
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<simpara>
|
|
Siehe auch <function>register_tick_function</function> und
|
|
<function>unregister_tick_function</function>.
|
|
</simpara>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="control-structures.declare.encoding">
|
|
<title>Encoding</title>
|
|
<para>
|
|
Das Encoding eines Skripts kann pro Skript mittels der <literal>encoding</literal>-Direktive
|
|
festgelegt werden.
|
|
<example>
|
|
<title>Das Encoding eines Skripts deklarieren</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
declare(encoding='ISO-8859-1');
|
|
// hier folgt der Code
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
|
|
<caution>
|
|
<simpara>
|
|
Die einzig zulässige Syntax für ein declare, das mit Namespaces kombiniert
|
|
wird, ist <literal>declare(encoding='...');</literal>, wobei
|
|
<literal>...</literal> der Name des Encodings ist.
|
|
<literal>declare(encoding='...') {}</literal> führt zu einem Parse-Error,
|
|
wenn es mit Namespaces kombiniert wird.
|
|
</simpara>
|
|
</caution>
|
|
<para>
|
|
Siehe auch <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
|
|
-->
|