Classe anonyme en PHP
Les classes anonymes sont des classes définies sans aucun nom. Elles ont été introduites dans PHP 7 pour permettre la création rapide des objets. Elles peuvent prendre des arguments via le constructeur, hériter d’autres classes, implémenter des interfaces, et utiliser des traits comme dans une classe normale.
En PHP 7, nous pouvons définir une classe anonyme en utilisant le mot-clé new class.
La syntaxe de base d’une classe anonyme est comme suite :
<?php $obj1 = new class() {}; $obj2 = new class($x, $y) { private $x; private $y; public function __construct($x, $y) { $this->x = $x; $this->y = $y; } }; ?>
Nous utilisons le mot-clé « new », suivi du mot-clé « class », suivi des paramètres optionnels du constructeur, et enfin le corps de la classe qui est entre des accolades. Les objets instanciés par une classe anonyme ne sont pas différentes de celle des objets instanciés par une classe normale.
Exemple complète:
<?php class MyClass { } interface MyInterface {} trait MyTrait { public function display() { return "Welcome to WayToLearnX.com"; } } $classX = new class extends MyClass implements MyInterface { use MyTrait; }; echo $classX->display(); ?>
La sortie :
Welcome to WayToLearnX.com
Comparées aux classes nommées, les classes anonymes sont à peu près pareils, Dans un sens où elles peuvent passer des paramètres au constructeur, hériter d’autres classes, implémenter des interfaces et utiliser des traits. Pourtant, les classes anonymes ne peuvent pas être sérialisées. Essayer de sérialiser une instance d’une classe anonyme, PHP génère une erreur fatale « Serialization of class@anonymous is not allowed… »