1
0
mirror of https://github.com/php/doc-de.git synced 2026-04-28 01:13:12 +02:00
Files
Martin Samesch 2fc1e2d3ad Sync with EN
2024-09-12 22:22:30 +02:00

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
-->