PHP - Passage de fonctions : Un guide pour débutants
Salut à toi, futur développeur PHP ! Aujourd'hui, nous allons entreprendre un voyage passionnant dans le monde du passage de fonctions en PHP. Ne t'inquiète pas si tu es nouveau dans le monde de la programmation – je serai ton guide amical, expliquant tout pas à pas avec plein d'exemples. Alors, mettons-nous à l'eau !
Quelles sont les fonctions callables ?
Avant de commencer, comprenons ce que nous entendons par "passage de fonctions". En PHP, les fonctions peuvent être traitées comme des données, ce qui signifie que nous pouvons les passer comme arguments à d'autres fonctions. Ces fonctions passables sont souvent appelées "callable" ou "callbacks".
Imagine que tu as une boîte magique (une fonction) qui peut faire différents tours en fonction des instructions (une autre fonction) que tu mets dedans. C'est essentiellement ce que nous faisons lorsque nous passons des fonctions !
array_map() : Transformer des tableaux avec facilité
Commençons par l'une des fonctions les plus couramment utilisées pour passer des callbacks : array_map()
.
Qu'est-ce que fait array_map() ?
array_map()
applique une fonction callback à chaque élément d'un tableau et renvoie un nouveau tableau avec les résultats.
Exemple 1 : Doubler des nombres
$numbers = [1, 2, 3, 4, 5];
$doubled = array_map(function($n) {
return $n * 2;
}, $numbers);
print_r($doubled);
Output :
Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
[4] => 10
)
Dans cet exemple, nous passons une fonction anonyme (également appelée closure) à array_map()
. Cette fonction prend chaque nombre et le multiplie par 2. Le résultat est un nouveau tableau avec tous les nombres doublés.
Exemple 2 : Mettre en majuscule les noms
$names = ['alice', 'bob', 'charlie'];
$capitalized = array_map('ucfirst', $names);
print_r($capitalized);
Output :
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
)
Ici, nous passons la fonction native PHP ucfirst
sous forme de chaîne. array_map()
applique cette fonction à chaque nom, mettant la première lettre en majuscule.
call_user_func() : Le couteau suisse des appels de fonction
call_user_func()
est une fonction polyvalente qui permet d'appeler n'importe quelle fonction callable ou méthode.
Exemple 3 : Appeler une fonction simple
function greet($name) {
return "Hello, $name!";
}
$result = call_user_func('greet', 'World');
echo $result; // Output : Hello, World!
Dans cet exemple, nous passons le nom de la fonction ('greet') sous forme de chaîne, suivi de ses arguments.
Exemple 4 : Appeler une méthode d'un objet
class Greeter {
public function sayHi($name) {
return "Hi, $name!";
}
}
$greeter = new Greeter();
$result = call_user_func([$greeter, 'sayHi'], 'PHP');
echo $result; // Output : Hi, PHP!
Ici, nous appelons une méthode d'un objet. Nous passons un tableau contenant l'objet et le nom de la méthode, suivi des arguments.
usort() : Tri personnalisé avec des callbacks
usort()
est une fonction puissante qui permet de trier un tableau en utilisant une fonction de comparaison personnalisée.
Exemple 5 : Trier un tableau d'objets
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";
}
Output :
Bob: 25
Alice: 30
Charlie: 35
Dans cet exemple, nous trions un tableau d'objets Person
en fonction de leur âge. La fonction de callback compare les âges de deux personnes et renvoie une valeur négative, nulle ou positive pour déterminer leur ordre.
Passage de callbacks à des fonctions utilisateur
Maintenant que nous avons vu comment les fonctions intégrées de PHP utilisent des callbacks, créons notre propre fonction qui accepte un callback.
Exemple 6 : Créer une fonction personnalisée de map
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);
Output :
Array
(
[0] => 1
[1] => 4
[2] => 9
[3] => 16
[4] => 25
)
Dans cet exemple, nous avons créé notre propre fonction myMap
qui se comporte comme array_map
. Elle prend un tableau et une fonction de callback, applique le callback à chaque élément, et renvoie un nouveau tableau avec les résultats.
Conclusion
Félicitations ! Tu viens de faire tes premiers pas dans le monde du passage de fonctions en PHP. Nous avons couvert array_map()
, call_user_func()
, usort()
, et même créé notre propre fonction qui accepte des callbacks.
Souviens-toi, passer des fonctions est une technique puissante qui permet d'écrire du code plus flexible et réutilisable. C'est comme avoir un couteau suisse dans ton coffre à outils de programmation - polyvalent et toujours prêt à affronter différentes tâches !
While tu continues ton voyage en PHP, tu trouveras de nombreuses occasions de utiliser ces techniques. Continue à pratiquer, et bientôt tu passeras des fonctions comme un pro !
Voici un tableau de référence rapide des fonctions que nous avons discutées :
Fonction | Description | Exemple d'utilisation |
---|---|---|
array_map() | Applique une callback à tous les éléments d'un tableau | Transformer les éléments d'un tableau |
call_user_func() | Appelle une callback avec des paramètres | Appeler dynamiquement des fonctions ou des méthodes |
usort() | Trie un tableau en utilisant une fonction de comparaison personnalisée | Trier des tableaux personnalisés |
Bonne programmation, et souviens-toi - dans le monde du PHP, les fonctions sont tes amis !
Credits: Image by storyset