$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
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
<🎜 weitergibt >$this Es ist nicht das Objekt, das immer darstellt, wo Sie müde sind.
ö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的!
相关推荐:
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!