Maison  >  Article  >  développement back-end  >  [classes et objets php] Classes anonymes

[classes et objets php] Classes anonymes

不言
不言original
2018-04-13 11:19:021727parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:démon phpArticle suivant:démon php