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 (&) in der - Funktionsdefinition vor den Parameternamen: + soll, setzt man in der Funktionsdefinition ein kaufmännisches Und + (&) vor den Parameternamen: <informalexample> <programlisting role="php"> -function fuege_etwas_anderes_an (&$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 (&) 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 (&$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 & 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"> -<?php -function blah() { - echo "In blah()<br>\n"; +<![CDATA[ +<?php +function blah() +{ + echo "In blah()<br>\n"; } -function fasel($arg = '') { - echo "In fasel(); ist der Parameter '$arg'.<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>