PHP 类的变量与成员,及其继承、访问与重写时要注意的问题
类的成员属性(属性的称呼相对于“方法”而言)包括类常量和类变量,其中类常量在定义时不可为空,类的属性在定义时如果被赋值,只能使用标量和数组,并且不能是表达式,因为类属性在编译期被初始化,PHP 在编译期不执行表达式。 1、成员的访问控制: public:可以继承,可以在类的方法之外被访问 , 如 $obj->prop; protected:可以继承,不可以在类的方法之外被访问 private:不可以继承,不可以在类的方法之外访问 PHP 4 使用 var 来声明类的属性,在PHP5之后不再使用,PHP5.3之前使用被警告,PHP5.3之后可以用在 public 之前或单独使用作为 public 的别名。 这三个访问控制关键字也可以修饰构造函数,当 private 和 protected 修饰类的构造函数时,你只能通过一个 publice static 的静态方法来调用构造函数以实例化对象,因为够在函数无法在类之外被访问了,比如,单例类的实现:
2、继承禁止: final 关键字,仅用于修饰类或类的方法 如果一个类被 final 修饰,这个类不能被继承,如果一个方法被final 修饰,则这个方法不能被子类重写(override)。
3、抽象类和抽象方法:abstract 仅用于 类和方法,抽象类不能直接用于实例化对象只能用于产生子类
4、类的常量及其访问:类的常量不能使用访问限制修饰符,他是 public 的,可继承,可以被子类重写,访问类的常量必须使用双冒号 :: ,可以使用类名或类的实例来访问。
类的常量是一个值,在代码编译期常量名被替换为相应的值,在运行期不可修改,因此,类的常量是与类本身相关,在实例化对象之前就已经存在了,因此类的常量可以直接使用类名访问。
5、类的静态成员及访问 static 可 以修饰类的属性及方法,被 static 修饰的成员属于类而不属于类的实例,静态成员必须使用类名加双冒号 :: 来访问, 因为在实例化对象之前 静 态成员就存在了,因此,在静态方法内,禁止使用指向实例本身的伪变量 $this(或习惯上称为 $this 指针) ,可以使用关键字 self 代替 类名(相当于类的魔术常量 __CLASS__)。 static 不能用于修饰 类的构造函数,也不能用于修饰接口声明的方法。
静态成员可以使用 访问控制关键字修饰,可以被继承和重写,需要注意的是,如果一个子类继承了父类的静态方法(没有重写该方法),那么子类调用的实际是父类的静态方法。因为静态成员持有者是类不是对象,所以类的多个实例是共享同一个静态属性的,在一个实例中修改静态属性会影响到另一个实例中的静态属性:
后期静态绑定:为了避免子类重写静态属性后,使用继承来的方法仍然访问父类的静态属性, PHP5.3 增加了一个新的语法:后期静态绑定,使用 static 关键字替代 self 关键字,使得 static 指向与 get_called_class() 返回的相同的类,即当前调用该静态方法的对象所属的类,该关键字对于 静态方法的访问同样有效。
6、类的方法中几个指向类或实例的关键字 $this->propName $this 指向类的实例 parent::xxx parent 指向父类,可以访问父类的静态常量、静态属性(parent::$xxx) ,不能访问父类的非静态属性 ,可以调用父类的方法(不能是 private 方法,无论是否静态) self::xxx self 指向定义了当前被调用的方法的类,用于访问静态成员和类的常量 static::xxx 访问实例化了调用当前方法的实例的那个类,用于访问静态成员和累的常量,他跟 self 的差别是访问静态成员时采用 “后期静态绑定”。 7、类的继承中的 重写问题: 重写的成员的访问控制程度不能被缩小,例如, public 的成员不能重写为 protected 非静态成员不能重写为静态成员,静态成员也不能重写为非静态成员 8、接口中定义的方法必须是 public 类在实现接口的方法时,这些方法也必须是 public 的,具体实现的(不能是 abstract )。 接口也可以定义接口常量,用法与类常量完全一致,但是接口不可以定义非函数成员。 接口与接口之间可以继承,接口的继承可以是多继承,用逗号隔开(字类与父类的继承是单继承的) 一个类可以实现多个接口,用逗号隔开
9、类型约束 PHP 的函数(或类的方法) 可以在声明时限定参数的类型,但只能 限定 array 或 object(class/interface) ,如果限定为 string 型, PHP 会认为是限定为一个 string 类 的 object 参数。 如果类型被限定为某个接口,则传入的参数必须是实现该接口的类的实例。 在接口实现、子类重写父类方法时,不能修改已经限定的参数类型。 在方法、函数调用时,如果传入了与限定的参数类型不同的数据将会报错,但是可以接受 null 参数。
|

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Alipay PHP ...

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.
