Date: 08/22/00
- Next message: Christian Ullrich: "[PHP-DOC] cvs: phpdoc /en/chapters install.xml"
- Previous message: Torben Wilson: "[PHP-DOC] cvs: phpdoc /en/chapters config.xml"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
tschuer Tue Aug 22 12:22:53 2000 EDT
Modified files:
/phpdoc/de/functions misc.xml
Log:
keeping translation in sync and some cosmetics
Index: phpdoc/de/functions/misc.xml
diff -u phpdoc/de/functions/misc.xml:1.12 phpdoc/de/functions/misc.xml:1.13
--- phpdoc/de/functions/misc.xml:1.12 Mon Jul 10 10:17:07 2000
+++ phpdoc/de/functions/misc.xml Tue Aug 22 12:22:53 2000
@@ -4,11 +4,162 @@
<partintro>
<para>
- Diese Funktionen stehen hier, weil sie in keine andere
- Kategorie passen.
+ Diese Funktionen stehen hier, weil sie in keine andere Kategorie
+ passen.
</para>
</partintro>
+ <refentry id="function.create-function">
+ <refnamediv>
+ <refname>create_function</refname>
+ <refpurpose>
+ Erzeugen einer anonymen / temporären (Lambda-Stil) Funktion
+ </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Beschreibung:</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>string <function>create_function</function></funcdef>
+ <paramdef>string <parameter>args</parameter></paramdef>
+ <paramdef>string <parameter>code</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ <para>
+ Erzeugt eine anonyme Funktion an Hand der übergebenen Parameter und
+ gibt einen eindeutigen Namen für diese zurück. Normalerweise sind
+ die <parameter>args</parameter> als mit "'" begrenzte Strings zu
+ übergeben. Dies gilt auch für <parameter>code</parameter>. Dadurch
+ werden die Variablen vor dem Parsen geschützt. Falls sie """
+ verwenden, müssen sie die Variablen-Namen "escapen", wie z.B.
+ <literal>\$avar</literal>.
+ </para>
+ <para>
+ Dieser Befehl kann z.B. verwendet werden, um eine Funktion an Hand
+ von Informationen zu erzeugen, die erst zur Laufzeit vorliegen.
+ <example>
+ <title>
+ Erzeugen einer anonymen / temporären Funktion per
+ <function>create_function</function>:
+ </title>
+ <programlisting role="php">
+$newfunc = create_function('$a,$b','return "ln($a) + ln($b) = ".log($a * $b);');
+echo "Neue Temp-Funktion: $newfunc\n";
+echo $newfunc(2,M_E)."\n";
+// Ausgabe:
+// Neue Temp-Funktion: lambda_1
+// ln(2) + ln(2.718281828459) = 1.6931471805599
+ </programlisting>
+ </example>
+ Sie können auch eine allgemeine Handhabungs-Funktion erstellen, die
+ einen mehr oder weniger große Anzahl an Operationen mit einer Liste
+ von Parametern durchführt.
+ <example>
+ <title>
+ Beispiel zum o.a. Verwendungszweck:
+ </title>
+ <programlisting role="php">
+function process($var1, $var2, $farr) {
+ for ($f=0; $f < count($farr); $f++)
+ echo $farr[$f]($var1,$var2)."\n";
+}
+
+// Erzeugung eines Bündels an mathematischen Funktionen
+$f1 = 'if ($a >=0) {return "b*a^2 = ".$b*sqrt($a);} else {return false;}';
+$f2 = "return \"min(b^2+a, a^2,b) = \".min(\$a*\$a+\$b,\$b*\$b+\$a);";
+$f3 = 'if ($a > 0 && $b != 0) {return "ln(a)/b = ".log($a)/$b;} else {return false;}';
+$farr = array(
+ create_function('$x,$y', 'return "als trig: ".(sin($x) + $x*cos($y));'),
+ create_function('$x,$y', 'return "als Hypotenuse: ".sqrt($x*$x + $y*$y);'),
+ create_function('$a,$b', $f1),
+ create_function('$a,$b', $f2),
+ create_function('$a,$b', $f3)
+ );
+
+echo "\nGebrauch des ersten Arrays der anonymen Funktionen\n";
+echo "Parameter: 2.3445, M_PI\n";
+process(2.3445, M_PI, $farr);
+
+// Erzeugung eines Bündels an String-Behandlungs-Routinen
+$garr = array(
+ create_function('$b, $a','if (strncmp ($a, $b, 3) == 0) return "** \"$a\" '.
+ 'und \"$b\"\n** Sieht für mich gleich aus! (ansehen der ersten 3 Zeichen)";'),
+ create_function('$a, $b','; return "CRCs: ".crc32($a)." , ".crc32(b);'),
+ create_function('$a, $b','; return "ähnlich(a, b) = ".similar_text($a, $b, &$p)."($p%)";')
+ );
+echo "\nGebrauch des zweiten Arrays der anonymen Funktionen\n";
+process("Twas brilling and the slithy toves", "Twas the night", $garr);
+ </programlisting>
+ </example>
+ wenn sie nun den o.a Code ausführen lassen, wird folgendes
+ ausgegeben :
+ <informalexample>
+ <programlisting>
+Gebrauch des ersten Arrays der anonymen Funktionen
+Parameter: 2.3445, M_PI
+als trig: -1.6291725057799
+als Hypotenuse: 3.9199852871011
+b*a^2 = 4.8103313314525
+min(b^2+a, a^2,b) = 8.6382729035898
+ln(a/b) = 0.27122299212594
+
+Gebrauch des zweiten Arrays der anonymen Funktionen
+** "Twas the night" und "Twas brilling and the slithy toves"
+** Sieht für mich gleich aus! (ansehen der ersten 3 Zeichen)
+CRCs: -725381282 , 1908338681
+ähnlich(a,b) = 11(45.833333333333%)
+ </programlisting>
+ </informalexample>
+ Möglicherweise liegt der häufigste Anwendungsfall für Funktionen im
+ Lambda-Stil (anonym) bei den Callback-Funktionen, also z.B. beim
+ Gebrauch von <function>array_walk</function> oder
+ <function>usort</function>.
+ <example>
+ <title>
+ Gebrauch der anonymen Funktionen als Callback-Funktion:
+ </title>
+ <programlisting role="php">
+$av = array("der ","ein ","dieser ","jener ");
+array_walk($av, create_function('&$v,$k','$v = $v."Zug";'));
+print_r($av); // mit PHP3 benutzen sie bitte var_dump()
+// Ausgaben:
+// Array
+// (
+// [0] => der Zug
+// [1] => ein Zug
+// [2] => dieser Zug
+// [3] => jener Zug
+// )
+
+// Ein Array aus Strings nach Länge geordnet
+$sv = array("kurz","länger","noch länger","dieser ist am längsten");
+print_r($sv);
+// Ausgaben:
+// Array
+// (
+// [0] => kurz
+// [1] => länger
+// [2] => noch länger
+// [3] => dieser ist am längsten
+// )
+
+// Sortierung von lang nach kurz
+usort($sv, create_function('$a,$b','return strlen($b) - strlen($a);'));
+print_r($sv);
+// Ausgabe:
+// Array
+// (
+// [0] => dieser ist am längsten
+// [1] => noch länger
+// [2] => länger
+// [3] => kurz
+// )
+ </programlisting>
+ </example>
+ </para>
+ </refsect1>
+ </refentry>
+
<refentry id="function.connection-aborted">
<refnamediv>
<refname>connection_aborted</refname>
@@ -240,7 +391,7 @@
<title>Beschreibung:</title>
<funcsynopsis>
<funcprototype>
- <funcdef>void <function>eval</function></funcdef>
+ <funcdef>mixed <function>eval</function></funcdef>
<paramdef>string <parameter>code_str</parameter></paramdef>
</funcprototype>
</funcsynopsis>
@@ -264,6 +415,14 @@
vorgenommenen Variablen-Zuweisungen nach Abarbeitung auch im
Hauptskript ihre Gültigkeit behalten.
</simpara>
+ <simpara>
+ Eine <literal>return</literal>-Angabe beendet sofort die
+ Auswertung des Strings. Mit PHP4 können sie ein
+ <literal>return</literal> verwenden, um das Ergebnis der Funktion
+ <function>eval</function> zu erhalten. In PHP3 ist
+ <function>eval</function> nämlich vom Typ <literal>void</literal>
+ und liefert nichts zurück.
+ </simpara>
<para>
<example>
<title>
@@ -740,122 +899,122 @@
<itemizedlist>
<listitem>
<simpara>
- a mit NUL gefüllte Zeichenkette (String)
+ a mit NUL gefüllte Zeichenkette (String)
</simpara>
</listitem>
<listitem>
<simpara>
- A mit Leerzeichen (SPACE) gefüllte Zeichenkette (String)
+ A mit Leerzeichen (SPACE) gefüllte Zeichenkette (String)
</simpara>
</listitem>
<listitem>
<simpara>
- h Hex Zeichenkette (String), unterer Halbwert zuerst
+ h Hex Zeichenkette (String), unterer Halbwert zuerst
</simpara>
</listitem>
<listitem>
<simpara>
- H Hex Zeichenkette (String), höherer Halbwert zuerst
+ H Hex Zeichenkette (String), höherer Halbwert zuerst
</simpara>
</listitem>
<listitem>
<simpara>
- c signed char
+ c signed char
</simpara>
</listitem>
<listitem>
<simpara>
- C unsigned char
+ C unsigned char
</simpara>
</listitem>
<listitem>
<simpara>
- s Short-Typ mit Vorzeichen (immer 16 Bit, Byte-Folge
- maschinen-abhängig)
+ s Short-Typ mit Vorzeichen (immer 16 Bit, Byte-Folge
+ maschinenabhängig)
</simpara>
</listitem>
<listitem>
<simpara>
- S Short-Typ ohne Vorzeichen (immer 16 Bit, Byte-Folge
- maschinen-abhängig)
+ S Short-Typ ohne Vorzeichen (immer 16 Bit, Byte-Folge
+ maschinenabhängig)
</simpara>
</listitem>
<listitem>
<simpara>
- n Short-Typ ohne Vorzeichen (immer 16 Bit, big endian byte
- order)
+ n Short-Typ ohne Vorzeichen (immer 16 Bit, big endian byte
+ order)
</simpara>
</listitem>
<listitem>
<simpara>
- v Short-Typ ohne Vorzeichen (immer 16 Bit, little endian byte
- order)
+ v Short-Typ ohne Vorzeichen (immer 16 Bit, little endian byte
+ order)
</simpara>
</listitem>
<listitem>
<simpara>
- i Integer mit Vorzeichen (Größe und Byte-Folge
- maschinen-abhängig)
+ i Integer mit Vorzeichen (Größe und Byte-Folge
+ maschinenabhängig)
</simpara>
</listitem>
<listitem>
<simpara>
- I Integer-Typ ohne Vorzeichen (Größe und Byte-Folge
- maschinen-abhängig)
+ I Integer-Typ ohne Vorzeichen (Größe und Byte-Folge
+ maschinenabhängig)
</simpara>
</listitem>
<listitem>
<simpara>
- l Long-Typ mit Vorzeichen (immer 32 Bit, Byte-Folge
- maschinen-abhängig)
+ l Long-Typ mit Vorzeichen (immer 32 Bit, Byte-Folge
+ maschinenabhängig)
</simpara>
</listitem>
<listitem>
<simpara>
- L Long-Typ ohne Vorzeichen (immer 32 Bit, Byte-Folge
- maschinen-abhängig)
+ L Long-Typ ohne Vorzeichen (immer 32 Bit, Byte-Folge
+ maschinenabhängig)
</simpara>
</listitem>
<listitem>
<simpara>
- N Long-Typ ohne Vorzeichen (immer 32 Bit, big endian byte
- order)
+ N Long-Typ ohne Vorzeichen (immer 32 Bit, big endian Byte-
+ Folge)
</simpara>
</listitem>
<listitem>
<simpara>
- V Long-Typ ohne Vorzeichen (immer 32 Bit, little endian byte
- order)
+ V Long-Typ ohne Vorzeichen (immer 32 Bit, little endian Byte-
+ Folge)
</simpara>
</listitem>
<listitem>
<simpara>
- f Fließkomma-Typ (maschinen-abhängige Größe und Wiedergabe)
+ f Fließkomma-Typ (maschinenabhängige Größe und Wiedergabe)
</simpara>
</listitem>
<listitem>
<simpara>
- d Double-Typ (maschinen-abhängige Größe und Wiedergabe)
+ d Double-Typ (maschinenabhängige Größe und Wiedergabe)
</simpara>
</listitem>
<listitem>
<simpara>
- x NUL Byte
+ x NUL Byte
</simpara>
</listitem>
<listitem>
<simpara>
- X Sichern eines Bytes
+ X Sichern eines Bytes
</simpara>
</listitem>
<listitem>
<simpara>
- @ NUL-Auffüllung bis zur absoluten Position
+ @ NUL-Auffüllung bis zur absoluten Position
</simpara>
</listitem>
</itemizedlist>
<example>
- <title>Mit Pack formatierter String</title>
+ <title>Mit Pack formatierter String:</title>
<programlisting role="php">
$binarydata = pack ("nvc*", 0x1234, 0x5678, 65, 66);
</programlisting>
- Next message: Christian Ullrich: "[PHP-DOC] cvs: phpdoc /en/chapters install.xml"
- Previous message: Torben Wilson: "[PHP-DOC] cvs: phpdoc /en/chapters config.xml"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

