tom             Tue May  7 08:24:52 2002 EDT

  Modified files:              
    /phpdoc-de/language functions.xml 
  Log:
  sync to en (took over this this file)
  
Index: phpdoc-de/language/functions.xml
diff -u phpdoc-de/language/functions.xml:1.10 phpdoc-de/language/functions.xml:1.11
--- phpdoc-de/language/functions.xml:1.10       Tue Jan 22 04:51:30 2002
+++ phpdoc-de/language/functions.xml    Tue May  7 08:24:52 2002
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
+<!-- EN-Revision: 1.26 Maintainer: tom Status: ready -->
  <chapter id="functions">
   <title>Funktionen</title>
 
@@ -10,10 +11,13 @@
  
     <informalexample>
      <programlisting role="php">
-function foo ($arg_1, $arg_2, ..., $arg_n) {
+<![CDATA[
+function foo ($arg_1, $arg_2, ..., $arg_n)
+{
     echo "Beispielfunktion.\n";
     return $retval;
 }
+]]>
      </programlisting>
     </informalexample>
    </para>
@@ -21,11 +25,28 @@
    <simpara>
     Jeder beliebige korrekte PHP-Code kann in einer Funktion
     vorkommen, sogar andere Funktionen und <link
-    linkend="keyword.class">Klassen- </link>Definitionen.
+    linkend="keyword.class">Klassen-</link> Definitionen.
    </simpara>
    <simpara>
     In PHP3 müssen Funktionen definiert sein, bevor man auf sie
-    verweist.  In PHP4 ist das nicht mehr erforderlich.
+    verweist. In PHP4 ist das nicht mehr erforderlich.
+   </simpara>
+   <simpara>
+    PHP unterstützt weder das Überladen von Funktionen, noch ist es
+    möglich, zuvor deklarierte Funktionen neu zu definieren oder die
+    Definition zu löschen.
+   </simpara>
+   <simpara>
+    PHP 3 unterstützt keine variable Anzahl von Parametern,
+    obwohl Vorgabewerte für Parameter unterstützt werden
+    (weitere Informationen finden Sie unter
+    <link linkend="functions.arguments.default">Vorgabewerte
+    für Parameter</link>). PHP 4 unterstützt beides: siehe
+    <link linkend="functions.variable-arg-list">Variable
+    Parameteranzahl</link> und die Funktionsreferenzen für
+    <function>func_num_args</function>,
+    <function>func_get_arg</function> und
+    <function>func_get_args</function> für weitere Informationen.
    </simpara>
   </sect1>
  
@@ -34,23 +55,32 @@
  
    <simpara>
     Mit einer Parameterliste kann man Informationen an eine Funktion 
-    übergeben. Die Parameterliste ist eine kommagetrennte Liste von
-    Variablen und/oder Konstanten.
+    übergeben. Die Parameterliste ist eine durch Kommas getrennte
+    Liste von Variablen und/oder Konstanten.
    </simpara>
    <para>
     PHP unterstützt die Weitergabe von Parametern als Werte (das ist
     der Standard), als <link
-    linkend="functions.arguments.by-reference">Verweise </link>, und
-    als <link linkend="functions.arguments.default">Vorgabewerte
-    </link>. Die Übergabe einer beliebigen Parameterzahl ist nicht
-    möglich, einen ähnlichen Effekt kann man aber durch die Übergabe
-    von Arrays erreichen.
+    linkend="functions.arguments.by-reference">Verweise</link>, und
+    als <link linkend="functions.arguments.default">Vorgabewerte</link>.
+    Die Übergabe einer variablen Anzahl von Parametern wird nur von
+    PHP 4 und höher unterstützt, siehe <link
+    linkend="functions.variable-arg-list">Variable
+    Parameteranzahl</link> und die Funktionsreferenzen für
+    <function>func_num_args</function>,
+    <function>func_get_arg</function> und
+    <function>func_get_args</function> für weitere Informationen. 
+    Durch die Übergabe eines Arrays mit Parametern kann man auch
+    in PHP 3 einen ähnlichen Effekt erreichen:
  
     <informalexample>
      <programlisting role="php">
-function rechne_array($eingabe) {
+<![CDATA[
+function rechne_array($eingabe)
+{
     echo "$eingabe[0] + $eingabe[1] = ", $eingabe[0]+$eingabe[1];
 }
+]]>
      </programlisting>
     </informalexample>
    </para>
@@ -61,47 +91,31 @@
     <simpara>
      Normalerweise werden den Funktionen Werte als Parameter
      übermittelt. Wenn man den Wert dieses Parameters innerhalb der
-     Funktion ändert, bleibt der Parameter ausserhalb der Funktion
+     Funktion ändert, bleibt der Parameter außerhalb der Funktion
      unverändert. Wollen Sie aber genau das erreichen, dann müssen
-     Sie die Parameter als Verweise übergeben. 
+     Sie die Parameter als Verweise (Referenzen) übergeben. 
     </simpara>
        
     <para>
      Wenn eine Funktion einen Parameter generell als Verweis behandeln
-     soll, setzt man ein kaufmännisches Und (&amp;) in der
-     Funktionsdefinition vor den Parameternamen:
+     soll, setzt man in der Funktionsdefinition ein kaufmännisches Und
+     (&amp;) vor den Parameternamen:
  
      <informalexample>
       <programlisting role="php">
-function fuege_etwas_anderes_an (&amp;$string) {
-    $string .= 'und nun zu etwas völlig anderem.';
+<![CDATA[
+function fuege_etwas_anderes_an (&$string)
+{
+    $string .= 'und nun zu etwas anderem.';
 }
 $str = 'Dies ist ein String, ';
 fuege_etwas_anderes_an ($str);
-echo $str; // Ausgabe 'Dies ist ein String, und nun zu etwas völlig anderem.'
-      </programlisting>
-     </informalexample>
-    </para>
- 
-    <para>
-     Wenn Sie eine Variable andererseits als Verweis an eine Funktion
-     übergeben wollen, die dies nicht tut, können Sie das
-     kaufmännische Und (&amp;) auch beim Aufruf der Funktion
-     verwenden:
- 
-     <informalexample>
-      <programlisting role="php">
-function bla ($fasel) {
-    $fasel .= ' und nun zu etwas völlig anderem.';
-}
-$str = 'Dies ist ein String, , ';
-bla ($str);
-echo $str;  // outputs 'Dies ist ein String, '
-bla (&amp;$str);
-echo $str;  // outputs 'Dies ist ein String, und nun zu etwas völlig anderem.'
+echo $str; // Ausgabe: 'Dies ist ein String, und nun zu etwas anderem.'
+]]>
       </programlisting>
      </informalexample>
     </para>
+
    </sect2>
  
    <sect2 id="functions.arguments.default">
@@ -113,11 +127,14 @@
  
      <informalexample>
       <programlisting role="php">
-function machkaffee ($typ = "Cappucino") {
+<![CDATA[
+function machkaffee ($typ = "Cappucino")
+{
     return "Ich mache eine Tasse $typ.\n";
 }
 echo machkaffee ();
 echo machkaffee ("Espresso");
+]]>
       </programlisting>
      </informalexample>
     </para>
@@ -132,8 +149,8 @@
     </para>
  
     <simpara>
-     Der Vorgabewert muß eine Konstante sein, darf also (zum Beispiel)
-     keine Variable oder Element einer Klasse sein.
+     Der Vorgabewert muss ein konstanter Ausdruck sein, darf also (zum
+     Beispiel) keine Variable oder Element einer Klasse sein.
     </simpara>
     <para>
      Bitte beachten Sie, dass alle Vorgabewerte rechts von den 
@@ -142,11 +159,14 @@
 
      <informalexample>
       <programlisting role="php">
-function mach_joghurt ($typ = "rechtsdrehendes", $geschmack) {
+<![CDATA[
+function mach_joghurt ($typ = "rechtsdrehendes", $geschmack)
+{
     return "Mache einen Becher $typ $geschmack-joghurt.\n";
 }
  
 echo mach_joghurt ("Brombeer");   // arbeitet nicht wie erwartet
+]]>
       </programlisting>
      </informalexample>
     </para>
@@ -165,11 +185,14 @@
  
      <informalexample>
       <programlisting role="php">
-function mach_joghurt ($geschmack, $typ = "rechtsdrehendes") {
+<![CDATA[
+function mach_joghurt ($geschmack, $typ = "rechtsdrehendes")
+{
     return "Mache einen Becher $typ $geschmack-joghurt.\n";
 }
  
-echo mach_jogurt ("Brombeer");   // arbeitet wie erwartet.
+echo mach_joghurt ("Brombeer");   // arbeitet wie erwartet.
+]]>
       </programlisting>
      </informalexample>
     </para>
@@ -184,6 +207,25 @@
 
    </sect2>
 
+   <sect2 id="functions.variable-arg-list">
+    <title>Variable Anzahl von Parametern</title>
+       
+    <simpara>
+     PHP 4 unterstützt eine variable Anzahl von Parametern in
+     benutzerdefinierten Funktionen. Das Handling dieser Parameter
+     fällt mittels der Funktionen <function>func_num_args</function>,
+     <function>func_get_arg</function> und
+     <function>func_get_args</function> sehr leicht.
+    </simpara>
+
+    <simpara>
+     Es ist keine spezielle Syntax erforderlich. Die Parameter können
+     wie gehabt explizit in den Funktionsdeklarationen angegeben
+     werden, und werden sich wie gewohnt verhalten.
+    </simpara>
+
+   </sect2>
+
   </sect1>
  
   <sect1 id="functions.returning-values">
@@ -192,38 +234,67 @@
    <para>
     Sie können Werte mit dem optionalen Befehl "return" zurückgeben.
     Es können Variablen jedes Typs zurückgegeben werden, auch Listen
-    oder Objekte.
+    oder Objekte. Die beendet sofort die Funktion, und die Kontrolle
+    wird wieder an die aufrufende Zeile zurückgegeben. Weitere
+    Informationen finden Sie unter <function>return</function>.
     <informalexample>
      <programlisting role="php">
-function quadrat ($zahl) {
+<![CDATA[
+function quadrat ($zahl)
+{
     return $zahl * $zahl;
 }
 echo quadrat (4);   // gibt '16' aus.
+]]>
      </programlisting>
     </informalexample>
    </para>
       
    <para>
-    Es ist leider nicht möglich, mehrere Werte von einer Funktion
-    zurückgeben zu lassen. Ein ähnliches Resultat kann man aber durch
-    die Rückgabe von Listen bekommen.
+    Es ist nicht möglich, mehrere Werte von einer Funktion zurückzugeben.
+    Ein ähnliches Resultat kann man aber durch die Rückgabe von Listen
+    erreichen.
  
     <informalexample>
      <programlisting role="php">
-function kleine_zahlen() {
+<![CDATA[
+function kleine_zahlen()
+{
    return array (0, 1, 2);
 }
 list ($null, $eins, $zwei) = kleine_zahlen();
+]]>
+     </programlisting>
+    </informalexample>
+   </para>
+   <para>
+    Um von einer Funktion eine Referenz zurückzugeben, müssen Sie
+    den Referenz-Operator &amp; sowohl in der Funktionsdeklaration,
+    als auch bei der Zuweisung des zurückgegebenen Wertes verwenden: 
+    <informalexample>
+     <programlisting role="php">
+<![CDATA[
+function &returniere_referenz()
+{
+    return $einereferenz;
+}
+
+$neuereferenz =& returniere_referenz();
+]]>
      </programlisting>
     </informalexample>
    </para>
+   <simpara>
+    Weitere Informationen über Referenzen finden Sie im Kapitel
+    <link linkend="language.references">Referenzen in PHP</link>.
+   </simpara>
   </sect1>
  
   <sect1 id="functions.old-syntax">
    <title><literal>old_function</literal></title>
  
    <simpara>
-    Der Befehl <literal>old_function</literal> erlaubt es, ein
+    Der Befehl <literal>old_function</literal> erlaubt es, eine
     Funktion genauso wie bei PHP/FI2 zu definieren (nur "function"
     wird durch "old_function" ersetzt.
    </simpara>
@@ -239,7 +310,7 @@
      </function>, <function>array_walk</function> und <function>
      register_shutdown_function</function> benutzt werden können.
      Dieses Manko können Sie umgehen, indem Sie eine Adapterfunktion
-     in normalem PHP3 schreiben, die die
+     (in normalem PHP3) schreiben, welche die
      <literal>old_function</literal> aufruft.
     </para>
    </warning>
@@ -253,20 +324,32 @@
     PHP unterstützt das Konzept der Variablenfunktionen. Wenn Sie an
     das Ende einer Variablen Klammern hängen, versucht PHP eine
     Funktion aufzurufen, deren Name der aktuelle Wert der Variable
-    ist. Diese Möglichkeit kann für Callbacks, Funktionstabellen und
+    ist. Dies kann unter anderem für Callbacks, Funktionstabellen,
+    usw. genutzt werden.
+   </para>
+   <para>
+    Variablenfunktionen funktionieren nicht mit Sprachkonstrukten
+    wie <function>echo</function>, <function>unset</function>,
+    <function>isset</function>, <function>empty</function> und 
+    <function>include</function>. Das Konstrukt 
+    <function>print</function> ist jedoch eine Ausnahme und
+    funktioniert. Dies ist einer der Hauptunterschiede zwischen
+    PHP Funktionen und Sprachkonstrukten.
    </para>
-
    <para>
     <example>
      <title>Beispiel für Variablenfunktionen</title>
      <programlisting role="php">
-&lt;?php
-function blah() {
-    echo "In blah()&lt;br>\n";
+<![CDATA[
+<?php
+function blah()
+{
+    echo "In blah()<br>\n";
 }
 
-function fasel($arg = '') {
-    echo "In fasel(); ist der Parameter '$arg'.&lt;br>\n";
+function fasel($arg = '')
+{
+    echo "In fasel(); der Parameter ist '$arg'.<br>\n";
 }
 
 $func = 'blah';
@@ -274,8 +357,13 @@
 $func = 'fasel';
 $func('test');
 ?>
+]]>
      </programlisting>
     </example>
+   </para>
+   <para>
+    Siehe auch <link linkend="language.variables.variable">
+    Variable Variablen</link> und <function>function_exists</function>.
    </para>
 
   </sect1>


Reply via email to