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>