对象
PHP 对待对象的方式等同于引用或句柄,即每个变量都持有对象的引用,而不是整个对象的复制。参见 对象和引用。
- 访问控制 对属性或方法的访问控制(PHP 7.1.0 以后支持常量),是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。
- 被定义为公有的类成员可以在任何地方被访问。
- 被定义为受保护的类成员则可以被其自身以及其子类和父类访问。
- 被定义为私有的类成员则只能被其定义所在的类访问。
- 抽象类 PHP 有抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
- final 类 final 关键字通过在定义方法和常量之前加上 final 来防止被子类覆盖。 如果一个类被声明为 final,则不能被继承。
- 注意: 属性和常量不能被定义为 final,只有类、方法、常量(PHP 8.1.0 起)才能被定义为 final。 从 PHP 8.0.0 起,除了构造函数之外,私有方法也不能声明为 final 。
- 魔术方法 魔术方法是一种特殊的方法,当对对象执行某些操作时会覆盖 PHP 的默认操作。
- 警告 PHP 保留所有以
__开头的方法名称。 因此,除非覆盖 PHP 的行为,否则不建议使用此类方法名称。
- 警告 PHP 保留所有以
- 接口 使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。 由于接口(interface)和类(class)、trait 共享了命名空间,所以它们不能重名。
- 接口就像定义一个标准的类一样,通过 interface 关键字替换掉 class 关键字来定义,但其中所有的方法都是空的。
- 接口中定义的所有方法都必须是 public ,这是接口的特性。
- 接口可以定义魔术方法,以便要求类(class)实现这些方法。
