面向对象三大特性:封装、继承、多态。
官方文档:http://php.net/manual/zh/language.oop5.php
要创建一个类的实例,必须使用 new 关键字。如果该类属于一个名字空间,则必须使用其完整名称。
你可以使用 ClassName::class 获取一个字符串,包含了类 ClassName 的完全限定名称。
$this self parent static当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。
使用 self:: 来访问静态方法和静态变量。
使用 static:: 来访问静态方法和静态变量。
使用 parent:: 来访问父类的方法和静态属性。
在类定义内部,可以用 new self 和 new parent 创建新对象。
属性 中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指 PHP 脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。
staticprivate
protected
public
__construct()
__destruct()
__call()
__callStatic()
__get()
__set()
__isset()
__unset()
__sleep() 常用于提交未提交的数据,或类似的清理操作。同时,如果有一些很大的对象,但不需要全部保存,这个功能就很好用。
__wakeup() 经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。
__toString() 方法用于一个类被当成字符串时应怎样回应,例如 echo $obj。
__invoke() 当尝试以调用函数的方式调用一个对象时,此方法会被调用。例如 obj($arg)。
__set_state() 当调用 var_export() 导出类时,此静态方法会被调用。
__clone()
__debugInfo() 对对象使用 var_dump() 时,该方法被调用。例如 var_dump(new MyClass(42));
一个类可以在声明中用 extends 关键字继承另一个类的方法和属性。
子类可以覆盖父类的属性或方法,当覆盖方法时,参数必须保持一致否则 PHP 将发出 E_STRICT 级别的错误信息。但构造函数例外,构造函数可在被覆盖时使用不同的参数。
final 禁止继承如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。
用于 类 和 方法 前。
abstract抽象类中的抽象方法不能有具体实现。
抽象类中的普通方法有具体的实现。
抽象类不能被实例化。用于被其他类继承,子类必须定义抽象类中所有的抽象方法。
interface接口中的方法不能有具体实现。
接口中的方法必须公有。
implements
实现接口的类必须实现接口中定义的 所有 方法。
一个类可以实现多个接口,使用逗号分隔。
接口也可以继承接口 extends。接口可以继承多个接口。
接口常量不能被覆盖。
traittrait使用 use,并用逗号分隔。
class MyClass {
use Hello, World;
public function ...
}