Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Verwendungs- und Zugriffsqualifikatoren von $this in PHP

Detaillierte Erläuterung der Verwendungs- und Zugriffsqualifikatoren von $this in PHP

小云云
小云云Original
2018-03-15 15:23:133812Durchsuche

$this kann nicht in statischen Funktionen in Klassen verwendet werden, da statische Funktionen Speicherplatz ohne Instanziierung generieren, während Klassen vor der Generierung von Speicherplatz instanziiert werden müssen. Die beiden Speicher sind nicht zusammen und können nicht aufeinander zugreifen.

Die folgende Schreibweise ist also falsch

<span style="font-family: 微软雅黑, "Microsoft YaHei";">class Book extends Goods {<br/>	public $anthor;<br/>	public $publisher;<br/>	static public function get_author($author){<br/>		$this->author = $author;<br/>	} <br/>}</span>


Das heißt, sie kann nur durch Aufrufen von non verwendet werden -statische Methoden mit Objekten $this

Erst nachdem die nicht-statische Methode bestimmt wurde, kann der Wert von $this nach dem Objekt bestimmt werden

Grundlegende Gründe für die Verwendung von $this:

1. Welches Objekt die aufrufende Methode aufruft, $this in der Methode ist dieses Objekt

Genau wie das Folgende:

Dies zeigt auch, dass $this nichts mit der Position welcher Klasse zu tun hat, sondern nur damit, welches Objekt instanziiert wird.

2. Die Objektumgebung kann weitergegeben werden:


Wenn sie innerhalb der aktuellen Methode liegt Es wurde festgestellt, dass die Objektumgebung bei einem statischen Aufruf einer nicht statischen Methode in der Cover-Methode die aktuelle Objektumgebung an die statisch aufgerufene nicht statische Methode

$this Es ist nicht das Objekt, das immer darstellt, wo Sie müde sind.

Änderungsqualifizierer

öffentlich geteilt

schützen geschützt

private Privat

wird verwendet, um zu beschreiben, wo auf ein Mitglied (Eigenschaft, Methode) zugegriffen werden kann.

Hinweis:

PHP verwendet das Konzept von Klassen, um Mitglieder zu ändern und zu qualifizieren.

PHP unterteilt den Zugriffscode in drei Bereiche: innerhalb der Klasse, außerhalb der Klasse und innerhalb der Klasse in der Vererbungskette.

wird basierend darauf bestimmt, wo auf das Mitglied zugegriffen wird und wo das Mitglied definiert ist

Nehmen Sie die Eigenschaft als Beispiel


öffentlich

Öffentlich bedeutet, dass sich die Mitglieder innerhalb dieser Klasse, innerhalb der Klasse in der Vererbungskette und befinden Außerhalb des Unterrichts ist alles zugänglich!

protect

protected bezieht sich auf die Klasse, deren Mitglieder sich innerhalb dieser Klasse und in der Vererbungskette (Unterklasse, übergeordnete Klasse) befinden innerhalb von

privat

Privat bedeutet, dass nur innerhalb dieser Klasse darauf zugegriffen werden kann!

So wählen Sie aus:

Ein Prinzip: Versuchen Sie, die Kapselung widerzuspiegeln. Kapselung bedeutet, die interne Implementierung so weit wie möglich zu verbergen und nur externe Betriebsschnittstellen zu entwickeln!

Syntaktisch, das heißt, die Eigenschaften und Methoden privatisieren (schützen), die nicht für die externe Verwendung benötigt werden, sodass nur einige notwendige öffentliche Methoden übrig bleiben!

需要注意的是:

1、一定要先明确访问的是哪里定义的!


2、私有成员不能被重写

只有在自己的类中才能访问到对应的私有成员


建议是

如果需要通过继承,你就使用保护的,少用私有的!

在没有继承时,尽量使用私有的!

3、在重写时,如果重写成员的访问级别不一致。子类的级别比父类的级别,相等或者弱,可以!强,不行!


这样是语法规定,如果想解释也是很简单的

是这样的,我简单说明
1 基类有一个方法,比如 // 我们不考虑Object作为所有类的基类啦。 呵呵呵!

public void method1(){
  method2(); // 此方法需要调用method2();
}
public void method2(){ // 如果这个方法是abstract 的话,也许会看得更清楚,不过不常见.
}

2 子类重写了 

@Override
private void method2(){ // 当然,编译错误,我们只是用来说明这样做的问题
}

3 子类的子类
如果他调用 method1() 会出现什么后果呢?
a) 他能访问method1(), 因为那是他的基类,且是public
b) 但很可惜,method1()里面 却不能访问method2()了,因为在父类是private的了。

这岂不是很可笑的情况。

所以,子类不能比父类的更私有,但可以更公开。 呵呵。这样才能保证父类已经实现的代码能够使用。

另:从5.0开始,子类方法override时,可以返回与父类不同的类型。但参数必须完全相同。

4、

1, 兼容性的问题

早先的 php的面向对象不完善,没有访问控制!

在声明属性时,使用 var 关键字!

声明方法时,什么都不使用!function

为了兼容,上面的做法还是可以使用!

var, function。访问权限都是public的!

相关推荐:

详解PHP中self与$this的区别

PHP中$this指针使用实例详解

php 静态函数中$this的问题

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendungs- und Zugriffsqualifikatoren von $this 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