Codebeispiele für nicht weitergeleitete Anrufe und weitergeleitete Anrufe in PHP

不言
Freigeben: 2023-04-03 17:54:01
Original
2518 Leute haben es durchsucht

Dieser Artikel enthält Codebeispiele zum Nicht-Weiterleiten von Anrufen in PHP. Ich hoffe, dass er für Freunde hilfreich ist.

Statischer Zugriff auf Mitglieder einer Klasse:

1. Nicht weitergeleitete Anrufe

1) Klarer Klassenname (A::funcA())

2. Weiterleitungsaufruf

    1)self::
    2)parent::
    3)static::
    4)forward_static_call()
    5)get_called_class()
Nach dem Login kopieren

Hinweis:
„Late binding“ bedeutet, dass static:: nicht mehr in die Klasse geparst wird, in der die aktuelle Methode definiert ist, sondern tatsächlich Lauf zum Zeitpunkt berechnet. Es kann auch als „statische Bindung“ bezeichnet werden, da es für Aufrufe statischer Methoden verwendet werden kann (aber nicht darauf beschränkt ist).

<?php
class A {
    public static function foo() {
        static::who();
    }

    public static function who() {
        echo __CLASS__."\n";
    }
}

class B extends A {
    public static function test() {
        A::foo();
        parent::foo();
        self::foo();
    }

    public static function who() {
        echo __CLASS__."\n";
    }
}
class C extends B {
    public static function who() {
        echo __CLASS__."\n";
    }
}

C::test();
?>
Nach dem Login kopieren
Ausführungsergebnisse:
A
C
C
Nach dem Login kopieren
Hinweis:
In einer nicht statischen Umgebung ist die aufgerufene Klasse die Klasse, zu der die Objektinstanz gehört. Da $this-> versucht, die private Methode im selben Bereich aufzurufen, kann static:: zu unterschiedlichen Ergebnissen führen. Ein weiterer Unterschied besteht darin, dass static:: nur mit statischen Eigenschaften verwendet werden kann.

Geerbtes Eigentum gehört Ihnen

Zugriff auf die aktuelle Klasse, Zugriff gemäß den reservierten Wortmerkmalen und dann Zugriff gemäß der Vererbungskette.

$this Zugriffsmitglied (Aufrufkontext)

self:: Zugriffsmitglied (Parsingkontext)

<?php
 
class A{
    protected $value = "A value";
 
    public function printValue(){
        echo $this->value;
    }
}
class B extends A{
   protected $value = "B value";
}
$app = new B();
$app->printValue();
Nach dem Login kopieren
运行结果:B value
Nach dem Login kopieren
<?php
 
class A{
    //只有将属性定义为静态的才能使用self::进行调用
    static protected $value = "A static value ";
    public function printValue(){
        echo self::$value;
    }
}
 
class B extends A{
    static protected $value = "B static value";
}
 
$app = new B();
$app->printValue();
Nach dem Login kopieren
运行结果:A static value
Nach dem Login kopieren
Nach dem Login kopieren
<?php
class A{
    static protected $value = "A static value ";
}
 
class B extends A{
    public function printValue(){
        echo self::$value;
    }
}
$app = new B();
$app->printValue();
Nach dem Login kopieren
运行结果:A static value
Nach dem Login kopieren
Nach dem Login kopieren

Verwandte Empfehlungen:

PHP Wants Wie implementiert man die Seitensprungfunktion? (Beispiel eines Funktions-Tags)

Wie implementiert man PHP-Dropdown-Menüs und mehrstufige Spalten? (Tatsächlicher Codetest)

Der Code, der PHP und HTML kombiniert, um Bilddateien auf den Server hochzuladen

Das obige ist der detaillierte Inhalt vonCodebeispiele für nicht weitergeleitete Anrufe und weitergeleitete Anrufe in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage