Maison >développement back-end >tutoriel php >[classes et objets php] Classes anonymes
Le contenu partagé avec vous dans cet article concerne les [classes et objets php] classes anonymes. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer
Classes anonymes
PHP. 7 Commencez à prendre en charge les cours anonymes.
Fonction : créer un objet simple unique
Vous pouvez transmettre des paramètres au constructeur d'une classe anonyme, vous pouvez également étendre d'autres classes, implémenter des interfaces et d'autres caractéristiques communes. utilisé pour les classes :
<?phpclass SomeClass {}interface SomeInterface {}trait SomeTrait {} var_dump(new class(10) extends SomeClass implements SomeInterface { private $num; public function __construct($num) { $this->num = $num; } use SomeTrait; });/* outputs: object(class@anonymous)#1 (1) { ["Command line code0x104c5b612":"class@anonymous":private]=> int(10) } */
Une fois qu'une classe anonyme est imbriquée dans une classe normale, elle ne peut pas accéder aux méthodes ou propriétés privées (privées), protégées (protégées) de la classe externe (Classe externe).
Afin d'accéder aux propriétés ou méthodes protégées de la classe externe, la classe anonyme peut étendre la classe externe.
Afin d'utiliser l'attribut privé de la classe externe (Outer class), il doit être transmis via le constructeur :
<?phpclass Outer{ private $prop = 1; protected $prop2 = 2; protected function func1() { return 3; } public function func2() { return new class($this->prop) extends Outer { private $prop3; public function __construct($prop) { $this->prop3 = $prop; } public function func3() { return $this->prop2 + $this->prop3 + $this->func1(); } }; } }echo (new Outer)->func2()->func3(); //6
déclare la même classe anonyme, et les objets créés sont tous des instances de cette classe.
Le nom de la classe anonyme est donné par le moteur, comme le montre l'exemple ci-dessous. En raison des détails d'implémentation, il ne faut pas se fier à ce nom de classe.
<?phpecho get_class(new class {});//class@anonymousD:\phpStudy2018\PHPTutorial\WWW\index.php00500020
Recommandations associées :
Surcharge de [classes et objets php]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!