Heim  >  Artikel  >  Backend-Entwicklung  >  [PHP-Klassen und -Objekte] Anonyme Klassen

[PHP-Klassen und -Objekte] Anonyme Klassen

不言
不言Original
2018-04-13 11:19:021727Durchsuche

Der Inhalt, der in diesem Artikel mit Ihnen geteilt wird, handelt von [PHP-Klassen und -Objekten] und hat einen gewissen Referenzwert.

Anonyme Klassen

PHP 7 Beginnen Sie mit der Unterstützung anonymer Kurse.

Funktion: Erstellen Sie ein einmaliges einfaches Objekt

Sie können Parameter an den Konstruktor einer anonymen Klasse übergeben, Sie können auch andere Klassen erweitern, Schnittstellen implementieren und andere gemeinsame Merkmale aufweisen Wird für Klassen verwendet:

<?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)
}
*/

Nachdem eine anonyme Klasse in eine normale Klasse verschachtelt wurde, kann sie nicht auf die privaten (privaten), geschützten (geschützten) Methoden oder Eigenschaften der äußeren Klasse (äußere Klasse) zugreifen.
Um auf die geschützten Eigenschaften oder Methoden der äußeren Klasse zuzugreifen, kann die anonyme Klasse die äußere Klasse erweitern.
Um das private Attribut der äußeren Klasse (äußere Klasse) zu verwenden, muss es über den Konstruktor übergeben werden:

<?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

deklariert dieselbe anonyme Klasse und die erstellten Objekte sind alle Instanzen dieser Klasse.

Der Name der anonymen Klasse wird von der Engine vergeben, wie im Beispiel unten gezeigt. Aufgrund von Implementierungsdetails sollte man sich nicht auf diesen Klassennamen verlassen.

<?phpecho get_class(new class {});//class@anonymousD:\phpStudy2018\PHPTutorial\WWW\index.php00500020

Verwandte Empfehlungen:

[PHP-Klassen und -Objekte] überladen


Das obige ist der detaillierte Inhalt von[PHP-Klassen und -Objekte] Anonyme Klassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP-DaemonNächster Artikel:PHP-Daemon