Heim > Artikel > Backend-Entwicklung > php--declare-Anweisung
Die
declare-Struktur wird verwendet, um die Ausführungsanweisungen eines Codeabschnitts festzulegen. Die Syntax von „deklarieren“ ähnelt anderen Flusskontrollstrukturen: Der Direktiventeil
declare (directive) statement
ermöglicht das Festlegen des Verhaltens des Deklarationscodesegments. Derzeit sind nur zwei Anweisungen bekannt: Ticks und Codierung.
Hinweis: Codierung ist ein neuer Befehl in PHP 5.3.0.
Der Anweisungsteil des Deklarationscodesegments wird ausgeführt – wie er ausgeführt wird und welche Nebenwirkungen während der Ausführung auftreten, hängt von den in der Direktive festgelegten Anweisungen ab.
Die Deklarationsstruktur kann auch im globalen Bereich verwendet werden und wirkt sich auf den gesamten nachfolgenden Code aus (wenn jedoch eine Datei mit einer Deklarationsstruktur in andere Dateien eingebunden wird, hat dies keine Auswirkungen auf die übergeordnete Datei, die sie enthält).
<?php // these are the same: // you can use this: declare(ticks=1) { // entire script here } // or you can use this: declare(ticks=1); // entire script here ?>
Ticks
Tick (Taktzyklus) ist ein Ereignis, das jedes Mal auftritt, wenn der Interpreter N zeitgesteuerte Low-Level-Anweisungen im Deklarationscodesegment ausführt. Der Wert von N wird mit ticks=N im Direktiventeil der Deklaration angegeben.
Nicht alle Aussagen können zeitlich festgelegt werden. Normalerweise sind bedingte Ausdrücke und Parameterausdrücke nicht zeitgesteuert.
Die Ereignisse, die in jedem Tick auftreten, werden durch register_tick_function() angegeben. Weitere Einzelheiten finden Sie im Beispiel unten. Beachten Sie, dass pro Tick mehrere Ereignisse auftreten können.
Beispiel Nr. 1 Verwendungsbeispiel für Tick
<?php declare(ticks=1); // A function called on each tick event function tick_handler() { echo "tick_handler() called\n"; } register_tick_function('tick_handler'); $a = 1; if ($a > 0) { $a += 2; print($a); } ?>
Beispiel Nr. 2 Verwendungsbeispiel für Ticks
<?php function tick_handler() { echo "tick_handler() called\n"; } $a = 1; tick_handler(); if ($a > 0) { $a += 2; tick_handler(); print($a); tick_handler(); } tick_handler(); ?>
Siehe register_tick_function() und unregister_tick_function().
Kodierung
Sie können die Kodierungsanweisung verwenden, um die Kodierungsmethode für jedes Skript anzugeben.
Beispiel #3 Geben Sie die Kodierungsmethode für das Skript an
e5068104fcf3f1147e0a91bb3a9194aa
Achtung Die einzige zulässige Syntax für „declare“ in Kombination mit einem Namespace ist „declare(encoding='...');“, wobei ... der codierte Wert ist. Und deklarieren(encoding='...') {} führt in Kombination mit einem Namespace zu einem Analysefehler.
In PHP 5.3 wird der Codierungswert in der Deklaration ignoriert, es sei denn, --enable-zend-multibyte wird beim Kompilieren angegeben.
Beachten Sie, dass PHP nicht anzeigt, ob --enable-zend-multibyte während der Kompilierung angegeben wurde, es sei denn, phpinfo() wird verwendet.