PHP - Funktionen übergeben: Ein Anfängerleitfaden

Hallo da draußen, angehende PHP-Entwickler! Heute machen wir uns auf eine aufregende Reise in die Welt der Übertragung von Funktionen in PHP. Keine Sorge, wenn du neu im Programmieren bist – ich werde dein freundlicher Guide sein und alles Schritt für Schritt mit vielen Beispielen erklären. Also, tauchen wir ein!

PHP - Passing Functions

Was sind Callable Funktionen?

Bevor wir loslegen, lassen Sie uns verstehen, was wir mit "Funktionen übergeben" meinen. In PHP können Funktionen wie Daten behandelt werden, was bedeutet, dass wir sie als Argumente an andere Funktionen übergeben können. Diese übertragbaren Funktionen werden oft als "callable" oder "callbacks" bezeichnet.

Stellen Sie sich eine magische Box (eine Funktion) vor, die verschiedene Tricks machen kann, basierend auf den Anweisungen (anderer Funktion), die Sie hineingeben. Das ist im Wesentlichen, was wir tun, wenn wir Funktionen übergeben!

array_map(): Arrays mühelos transformieren

Lassen Sie uns mit einer der am häufigsten verwendeten Funktionen für die Übertragung von Callbacks beginnen: array_map().

Was macht array_map()?

array_map() wendet eine Callback-Funktion auf jedes Element eines Arrays an und gibt ein neues Array mit den Ergebnissen zurück.

Beispiel 1: Zahlen verdoppeln

$numbers = [1, 2, 3, 4, 5];

$doubled = array_map(function($n) {
return $n * 2;
}, $numbers);

print_r($doubled);

Ausgabe:

Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
[4] => 10
)

In diesem Beispiel übergeben wir eine anonyme Funktion (auch als Closure bezeichnet) an array_map(). Diese Funktion nimmt jede Zahl und multipliziert sie um 2. Das Ergebnis ist ein neues Array, in dem alle Zahlen verdoppelt sind.

Beispiel 2: Namen großschreiben

$names = ['alice', 'bob', 'charlie'];

$capitalized = array_map('ucfirst', $names);

print_r($capitalized);

Ausgabe:

Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
)

Hier übergeben wir die eingebettete PHP-Funktion ucfirst als String. array_map() wendet diese Funktion auf jeden Namen an und schreibt den ersten Buchstaben groß.

call_user_func(): Das Schweizer Army-Messer der Funktionserstellung

call_user_func() ist eine vielseitige Funktion, die es Ihnen ermöglicht, jede callable Funktion oder Methode aufzurufen.

Beispiel 3: Eine einfache Funktion aufrufen

function greet($name) {
return "Hello, $name!";
}

$result = call_user_func('greet', 'World');
echo $result;  // Ausgabe: Hello, World!

In diesem Beispiel übergeben wir den Namen der Funktion ('greet') als String, gefolgt von ihren Argumenten.

Beispiel 4: Methode eines Objekts aufrufen

class Greeter {
public function sayHi($name) {
return "Hi, $name!";
}
}

$greeter = new Greeter();
$result = call_user_func([$greeter, 'sayHi'], 'PHP');
echo $result;  // Ausgabe: Hi, PHP!

Hier rufen wir eine Methode eines Objekts auf. Wir übergeben ein Array, das das Objekt und den Namen der Methode enthält, gefolgt von den Argumenten.

usort(): Benutzerdefinierte Sortierung mit Callbacks

usort() ist eine leistungsstarke Funktion, die es Ihnen ermöglicht, ein Array mit einer benutzerdefinierten Vergleichsfunktion zu sortieren.

Beispiel 5: Sortierung eines Arrays von Objekten

class Person {
public $name;
public $age;

public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
}

$people = [
new Person('Alice', 30),
new Person('Bob', 25),
new Person('Charlie', 35)
];

usort($people, function($a, $b) {
return $a->age - $b->age;
});

foreach ($people as $person) {
echo "{$person->name}: {$person->age}\n";
}

Ausgabe:

Bob: 25
Alice: 30
Charlie: 35

In diesem Beispiel sortieren wir ein Array von Person-Objekten basierend auf ihrem Alter. Die Callback-Funktion vergleicht die Altersunterschiede zwischen zwei Personen und gibt einen negativen, nullen oder positiven Wert zurück, um ihre Reihenfolge zu bestimmen.

Callbacks an benutzerdefinierte Funktionen übergeben

Nun, da wir gesehen haben, wie PHP seine eingebetteten Funktionen mit Callbacks verwendet, lassen Sie uns eine eigene Funktion erstellen, die einen Callback akzeptiert.

Beispiel 6: Eine benutzerdefinierte Map-Funktion erstellen

function myMap($array, $callback) {
$result = [];
foreach ($array as $item) {
$result[] = $callback($item);
}
return $result;
}

$numbers = [1, 2, 3, 4, 5];

$squared = myMap($numbers, function($n) {
return $n * $n;
});

print_r($squared);

Ausgabe:

Array
(
[0] => 1
[1] => 4
[2] => 9
[3] => 16
[4] => 25
)

In diesem Beispiel haben wir unsere eigene myMap-Funktion erstellt, die sich ähnlich wie array_map verhält. Sie nimmt ein Array und eine Callback-Funktion, wendet die Callback-Funktion auf jedes Element an und gibt ein neues Array mit den Ergebnissen zurück.

Schlussfolgerung

Glückwunsch! Sie haben gerade Ihre ersten Schritte in die Welt der Übertragung von Funktionen in PHP gemacht. Wir haben array_map(), call_user_func(), usort() und sogar unsere eigene Funktion, die Callbacks akzeptiert, behandelt.

Denken Sie daran, dass das Übergeben von Funktionen eine leistungsstarke Technik ist, die es Ihnen ermöglicht, flexiblere und wiederverwendbare Code zu schreiben. Es ist wie ein Schweizer Army-Messer in Ihrem Coding-Toolkit – vielseitig und immer bereit, verschiedene Aufgaben zu bewältigen!

Während Sie Ihre Reise in PHP fortsetzen, werden Sie viele mehr Gelegenheiten finden, diese Techniken zu verwenden. Üben Sie weiter, und bald werden Sie Funktionen wie ein Profi übergeben!

Hier ist eine schnelle Referenztabelle der Funktionen, die wir besprochen haben:

Funktion Beschreibung Beispielanwendung
array_map() Wendet eine Callback-Funktion auf alle Elemente eines Arrays an Transformation von Array-Elementen
call_user_func() Ruft eine Callback-Funktion mit Parametern auf Dynamischer Aufruf von Funktionen oder Methoden
usort() Sortiert ein Array mit einer benutzerdefinierten Vergleichsfunktion Benutzerdefinierte Sortierung von Arrays

Frohes Coden, und denken Sie daran – in der Welt von PHP sind Funktionen Ihre Freunde!

Credits: Image by storyset