svn: /phpdoc/de/trunk/language/control-structures/ declare.xml goto.xml
[email protected] (Nikita Popov)
| Newsgroups | php.doc.de |
|---|---|
| Message-ID | <[email protected]> |
nikic Wed, 06 Jul 2011 10:58:05 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=312999
Log:
Sync DE declare and goto docs with EN
Changed paths:
U phpdoc/de/trunk/language/control-structures/declare.xml
U phpdoc/de/trunk/language/control-structures/goto.xml
svn-diffs-312999.txt
(text/x-diff, 9.4 KB)
Modified: phpdoc/de/trunk/language/control-structures/declare.xml
===================================================================
--- phpdoc/de/trunk/language/control-structures/declare.xml 2011-07-06 09:49:37 UTC (rev 312998)
+++ phpdoc/de/trunk/language/control-structures/declare.xml 2011-07-06 10:58:05 UTC (rev 312999)
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: n/a Maintainer: sammywg Status: ready -->
+<!-- EN-Revision: 312947 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><literal>declare</literal></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
@@ -64,14 +65,9 @@
</programlisting>
</informalexample>
</para>
-
+
<sect2 xml:id="control-structures.declare.ticks">
<title>Ticks</title>
- <caution>
- <simpara>
- Mit PHP 5.3.0 gilt Ticks als veraltet und wird mit PHP 6.0.0 entfernt.
- </simpara>
- </caution>
<para>
Ein Tick ist ein Event, das alle <varname>N</varname> Low-Level-Statements
auftritt, die vom Parser innerhalb des <literal>declare</literal>-Blocks
@@ -82,6 +78,10 @@
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
@@ -89,61 +89,67 @@
</para>
<para>
<example>
- <title>Eine PHP-Codesektion profilen</title>
+ <title>Tick Nutzungsbeispiel</title>
<programlisting role="php">
<![CDATA[
<?php
-// Eine Funktion, die die Zeit aufzeichnet, zu der sie aufgerufen wurde
-function profile($dump = FALSE)
+
+declare(ticks=1);
+
+// Funktion, welche bei jeden Tick-Event aufgerufen wird
+function tick_handler()
{
- static $profile;
+ echo "tick_handler() aufgerufen\n";
+}
- // Gibt die im Profil gespeicherten Zeiten zurück und löscht sie danach
- if ($dump) {
- $temp = $profile;
- unset($profile);
- return $temp;
- }
+register_tick_function('tick_handler');
- $profile[] = microtime();
+$a = 1;
+
+if ($a > 0) {
+ $a += 2;
+ print($a);
}
-// Einen Tick-Handler angeben
-register_tick_function("profile");
+?>
+]]>
+ </programlisting>
+ </example>
+ </para>
+ <para>
+ <example>
+ <title>Tick Nutzungsbeispiel</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
-// Die Funktion vor dem declare-Block initialisieren
-profile();
+function tick_handler()
+{
+ echo "tick_handler() aufgerufen\n";
+}
-// Einen Codeblock ausführen, bei jedem zweiten Statement einen Tick auslösen
-declare(ticks=2) {
- for ($x = 1; $x < 50; ++$x) {
- echo similar_text(md5($x), md5($x*$x)), "<br />;";
- }
+$a = 1;
+tick_handler();
+
+if ($a > 0) {
+ $a += 2;
+ tick_handler();
+ print($a);
+ tick_handler();
}
+tick_handler();
-// Die im Profiler gespeicherten Daten anzeigen
-print_r(profile(TRUE));
?>
]]>
</programlisting>
</example>
- Das Beispiel analysiert den PHP-Code im 'declare'-Block und erfasst die
- Zeiten, an denen jedes zweite Low-Level-Statement innerhalb des Blocks
- ausgeführt wurde. Diese Information kann danach verwendet werden, um die
- langsamen Bereiche eines bestimmten Codesegments ausfindig zu machen.
- Dieser Prozess kann auch mit anderen Methoden ausgeführt werden - die
- Verwendung von Ticks ist einfacher und leichter zu implementieren.
</para>
<simpara>
- Ticks sind sehr geeignet für das Debugging, die Implementierung einfachen
- Multitaskings, I/O-Verarbeitung im Hintergrund und viele weitere Anwendungen.
- </simpara>
- <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>
@@ -151,7 +157,7 @@
festgelegt werden.
<example>
<title>Das Encoding eines Skripts deklarieren.</title>
- <programlisting role="php">
+ <programlisting role="php">
<![CDATA[
<?php
declare(encoding='ISO-8859-1');
@@ -161,25 +167,32 @@
</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 encodete Wert ist.
- <literal>declare(encoding='...') {}</literal> bewirkt einen Parse-Error,
+ <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>
Der encodete declare-Wert wird in PHP 5.3 ignoriert, sofern PHP nicht mit
- <literal>--enable-zend-multibyte</literal> kompiliert wurde. In PHP 6.0.0
+ <literal>--enable-zend-multibyte</literal> kompiliert wurde.
+ </para>
+ <para>
+ PHP bietet abgesehen von <function>phpinfo</function> keine Möglichkeit zur Laufzeit
+ herauszufinden, ob es mit <literal>--enable-zend-multibyte</literal> kompiliert wurde.
+ </para>
+ <!-- FIXME PHP_6
+ In PHP 6.0.0
wird die <literal>encoding</literal>-Direktive verwendet, um den Scanner
darüber zu informieren, mit welchem Encoding die Datei erstellt wurde.
Zulässige Werte sind Encodingbezeichnungen wie <literal>UTF-8</literal>.
- </para>
+ -->
</sect2>
-
+
</sect1>
<!-- Keep this comment at the end of the file
@@ -193,7 +206,7 @@
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
-sgml-default-dtd-file:"../../manual.ced"
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
Modified: phpdoc/de/trunk/language/control-structures/goto.xml
===================================================================
--- phpdoc/de/trunk/language/control-structures/goto.xml 2011-07-06 09:49:37 UTC (rev 312998)
+++ phpdoc/de/trunk/language/control-structures/goto.xml 2011-07-06 10:58:05 UTC (rev 312999)
@@ -1,15 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: n/a Maintainer: hholzgra Status: ready -->
+<!-- EN-Revision: 312947 Maintainer: hholzgra Status: ready -->
<sect1 xml:id="control-structures.goto" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title><literal>goto</literal></title>
+ <?phpdoc print-version-for="goto"?>
<para>
Der <literal>goto</literal>-Operator kann benutzt werden um
innerhalb eines Programs zu einer anderen Anweisung zu springen.
Die Zielanweisung wird durch einen Namen gefolgt von einem
Doppelpunkt festgelegt und der <literal>goto</literal>-Anweisung
- wird der entsprechende Zielname angefügt.
+ wird der entsprechende Zielname angefügt. Hierbei handelt es sich
+ jedoch nicht um ein vollständig uneingeschränktes <literal>goto</literal>:
+ Die Zielanweisung muss in der selben Datei und im selben Kontext liegen,
+ d.h. dass weder aus einer Funktion oder Methode herausgesprungen werden
+ kann, noch in sie hineingesprungen. Weiterhin kann nicht in eine Schleifen-
+ oder switch-Anweisung hineingesprungen werden. Es ist jedoch möglich aus
+ diesen hinauszuspringen, weshalb <literal>goto</literal> häufig als Ersatz
+ für ein mehrstufiges <literal>break</literal> verwendet wird.
</para>
<para>
<example>
@@ -33,18 +41,70 @@
</screen>
</example>
</para>
+ <para>
+ <example>
+ <title><literal>goto</literal> Schleifenbeispiel</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+for ($i=0, $j=50; $i<100; $i++) {
+ while ($j--) {
+ if ($j==17) goto end;
+ }
+}
+echo "i = $i";
+end:
+echo 'j hit 17';
+?>
+]]>
+ </programlisting>
+ &example.outputs;
+ <screen>
+<![CDATA[
+j hit 17
+]]>
+ </screen>
+ </example>
+ </para>
+ <para>
+ <example>
+ <title>Das wird nicht funktionieren</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+goto loop;
+for ($i=0, $j=50; $i<100; $i++) {
+ while ($j--) {
+ loop:
+ }
+}
+echo "$i = $i";
+?>
+]]>
+ </programlisting>
+ &example.outputs;
+ <screen>
+<![CDATA[
+Fatal error: 'goto' into loop or switch statement is disallowed in
+script on line 2
+]]>
+ </screen>
+ </example>
+ </para>
<note>
<para>
Der <literal>goto</literal>-Operator ist ab PHP 5.3 verfügbar.
</para>
</note>
- <warning>
- <para>
- Es ist nicht gestattet in eine Schleife oder eine Switch-Anweisung
- hineinzuspringen, in so einem Fall wird ein fataler Fehler geworfen.
- </para>
- </warning>
-
+ <para>
+ <mediaobject>
+ <alt>Was ist das schlimmste, was passieren könnte, wenn man goto benutzt?</alt>
+ <imageobject>
+ <imagedata fileref="en/language/figures/xkcd-goto.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ Bild von <link xlink:href="&url.xkcd;292">xkcd</link>
+ </para>
</sect1>
<!-- Keep this comment at the end of the file
@@ -58,7 +118,7 @@
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
-sgml-default-dtd-file:"../../manual.ced"
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil