Keine Cache-Version


Caching deaktiviert Standardeinstellung für diese Seite:aktiviert (code LNG204)
Wenn die Anzeige zu langsam ist, können Sie den Benutzermodus deaktivieren, um die zwischengespeicherte Version anzuzeigen.

Rechercher une fonction PHP

create_function

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

create_functionErzeugen einer anonymen (Lambda-Stil) Funktion

Warnung

Diese Funktion ist seit PHP 7.2.0 als DEPRECATED (veraltet) markiert. Sich auf diese Funktion zu verlassen ist in keiner Weise empfehlenswert.

Beschreibung

create_function ( string $args , string $code ) : string

Erzeugt eine anonyme Funktion anhand der übergebenen Parameter und gibt einen eindeutigen Namen für diese zurück.

Achtung

Diese Funktion führt intern eval() aus und hat daher die gleichen Sicherheitsprobleme die eval() hat. Außerdem zeigt diese Funktion schlechtes Verhalten in anbetracht von Ausführungsgeschwindigkeit und Speicherverbrauch.

Wenn Sie PHP 5.3.0 oder neuer einsetzen sollten Sie stattdessen die nativ vorhandenen anonymen Funktionen verwenden.

Erste Seite von PHP-Handbuch Inhaltsverzeichnis Haut

Parameter-Liste

Normalerweise werden die Parameter als mit einfachen Anführungszeichen begrenzte Strings übergeben. Der Grund für die Verwendung von einfachen Anführungszeichen ist der Schutz der Variablen vor dem Parsen. Falls sie doppelte Anführungszeichen verwenden, müssen sie die Variablen-Namen escapen, wie z.B. \$avar.

args

Die Funktionsparameter.

code

Der Code der Funktion.

Erste Seite von PHP-Handbuch Inhaltsverzeichnis Haut

Rückgabewerte

Gibt einen eindeutigen Funktionsnamen als String oder FALSE im Fehlerfall zurück.

Erste Seite von PHP-Handbuch Inhaltsverzeichnis Haut

Beispiele

Beispiel #1 Erzeugen einer anonymen Funktion per create_function()

Dieser Befehl kann z.B. verwendet werden, um eine Funktion anhand von Informationen zu erzeugen, die erst zur Laufzeit vorliegen.

<?php
$newfunc 
create_function('$a,$b''return "ln($a) + ln($b) = " . log($a * $b);');
echo 
"Neue anonyme Funktion: $newfunc\n";
echo 
$newfunc(2M_E) . "\n";
// Ausgabe:
// Neue anonyme Funktion: lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599
?>

Sie können auch eine allgemeine Handler-Funktion erstellen, die einen mehr oder weniger große Anzahl an Operationen mit einer Liste von Parametern durchführt:

Beispiel #2 Erzeugung einer generellen Bearbeitungsfunktion mit create_function()

<?php
function process($var1$var2$farr)
{
    foreach (
$farr as $f) {
        echo 
$f($var1$var2) . "\n";
    }
}

// Nun erzeugen wir eine Sammlung von 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 "etwas Trigonometrie: ".(sin($x) + $x*cos($y));'),
    
create_function('$x,$y''return "eine Hypotenuse: ".sqrt($x*$x + $y*$y);'),
    
create_function('$a,$b'$f1),
    
create_function('$a,$b'$f2),
    
create_function('$a,$b'$f3)
    );

echo 
"\nWir benutzen nun das erste Array mit anonymen Funktionen\n";
echo 
"Parameter: 2.3445, M_PI\n";
process(2.3445M_PI$farr);

// Nun erzeugen wir eine Sammlung von Funktionen zur Bearbeitung von Zeichenketten
$garr = array(
    
create_function('$b,$a''if (strncmp($a, $b, 3) == 0) return "** \"$a\" '.
    
'und \"$b\"\n** Sehen für mich ähnlich aus! (unter Betrachtung der ersten 3 Zeichen)";'),
    
create_function('$a,$b''; return "CRCs: " . crc32($a) . ", ".crc32($b);'),
    
create_function('$a,$b''; return "similar(a,b) = " . similar_text($a, $b, &$p) . "($p%)";')
    );
echo 
"\nWir benutzen nun das zweite Array mit anonymen Funktionen\n";
process("Twas brilling and the slithy toves""Twas the night"$garr);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Wir benutzen nun das erste Array mit anonymen Funktionen
Parameter: 2.3445, M_PI
etwas Trigonometrie: -1.6291725057799
eine Hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a)/b = 0.27122299212594

Wir benutzen nun das zweite Array mit anonymen Funktionen
** "Twas the night" und "Twas brilling and the slithy toves"
** Sehen für mich ähnlich aus! (unter Betrachtung der ersten 3 Zeichen)
CRCs: -725381282, 342550513
similar(a,b) = 11(45.833333333333%)

Aber wahrscheinlich liegt der häufigste Anwendungsfall für Funktionen im Lambda-Stil (anonym) bei den Callback-Funktionen, also z.B. beim Gebrauch von array_walk() oder usort().

Beispiel #3 Gebrauch der anonymen Funktionen als Callback-Funktion

<?php
$av 
= array("the ""a ""that ""this ");
array_walk($avcreate_function('&$v,$k''$v = $v . "mango";'));
print_r($av);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Array
(
  [0] => the mango
  [1] => a mango
  [2] => that mango
  [3] => this mango
)

Ein Array con Zeichenketten sortiert von der kürzesten zur längsten

<?php

$sv 
= array("small""larger""a big string""it is a string thing");
print_r($sv);

?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Array
(
  [0] => small
  [1] => larger
  [2] => a big string
  [3] => it is a string thing
)

Sortiert von der Längsten zur Kürzesten

<?php

usort
($svcreate_function('$a,$b','return strlen($b) - strlen($a);'));
print_r($sv);

?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Array
(
  [0] => it is a string thing
  [1] => a big string
  [2] => larger
  [3] => small
)

Finde eine PHP-Funktion

Deutsche Übersetzung

Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.

Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.

Vielen Dank im Voraus.

Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-function.create-function.html

Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.

Referenzen

  1. Zeigen Sie - html-Dokument Sprache des Dokuments:fr Manuel PHP : http://php.net

Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.

Inhaltsverzeichnis Haut