Heim  >  Artikel  >  Backend-Entwicklung  >  Codebeispiele für nicht weitergeleitete Anrufe und weitergeleitete Anrufe in PHP

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

不言
不言Original
2018-08-10 10:37:262517Durchsuche

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()

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();
?>
Ausführungsergebnisse:
A
C
C
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();
运行结果:B value
<?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();
运行结果:A static value
<?php
class A{
    static protected $value = "A static value ";
}
 
class B extends A{
    public function printValue(){
        echo self::$value;
    }
}
$app = new B();
$app->printValue();
运行结果:A static value

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!

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