Heim >Backend-Entwicklung >PHP-Problem >Stellt self die aktuelle Klasse oder die Zugriffsklasse bei der Vererbung dar?
Das Schlüsselwort self
wird verwendet, um die Klasse innerhalb der Klasse zu ersetzen und die Klasse selbst zu ersetzen, in der sich die aktuelle Methode befindet. Mit der Implementierung von inheritance
, wenn der child Wenn eine Klasse
auf die Methode der übergeordneten Klasse
zugreift, ersetzt self
dann die aktuelle Klasse oder die Klasse, auf die zugegriffen wird? self
关键字是用于在类内部代替类的,代替的是当前方法所在的类本身那个,随着继承
的实现,如果子类
在访问父类方法
的时候,self
到底代替的是当前类还是访问类?
<?php class Fu{ public static $type="Fu"; public static function getType(){ echo self::$type." self<br>"; } } class Zi extends Fu{ public static $type="Zi"; } Fu::gettype();//Fu self Zi::gettype();//Fu self ?>
由上例所示,self
代表的是当前类,即其所在的父类,而并非继承的子类。
如果在方法被访问时动态的选择来访者所属的类,则需要使用static关
键字代替self
<?php class Fu{ public static $type="Fu"; public static function getType(){ echo self::$type." self<br>";//类的静态绑定 echo static::$type." static<br>";//类的静态延迟绑定 } } class Zi extends Fu{ public static $type="Zi"; } Fu::gettype();//Fu self Fu self Zi::gettype();//Fu self Zi static ?>Wie im obigen Beispiel gezeigt, repräsentiert
self
die aktuelle Klasse, also ihre übergeordnete Klasse, nicht die geerbte Unterklasse. Wenn Sie beim Zugriff auf die Methode dynamisch die Klasse auswählen, zu der der Besucher gehört, müssen Sie das Schlüsselwort static key
anstelle von self
verwenden, um auf Klassenmitglieder zuzugreifen. rrreeeempfohlen: php-Tutorial,
Das obige ist der detaillierte Inhalt vonStellt self die aktuelle Klasse oder die Zugriffsklasse bei der Vererbung dar?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!