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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.