> ### ***软件工程三大特性:重用性、灵活性、可扩展性***
**类的三大特性:封装、继承、多态**
定义类文件要跟类名相同,后面跟.class,例如:Index.class.php
$this是代表对象本身,self是代表类本身,它只跟类有关,与对象无关
parent是调用父类的方法,如调用父类的构造函数:parent::__construct()
类的成员修饰符:
public 类的外部、子类、类本身都可以调用
protected 除了类的外部不可调用,其它可以
private 只有类本身可以调用,其它不行
注:静态类中不能有$this,因为$this是指的是对象,而静态类是调用类里面的属性与方法,只与类本身有关,与对象无关。
抽象类:如果一个类中有抽象方法,那么这个类就叫抽象类。
```
abstract class 类名{
private $name;
public function start() {
……
}
abstaact function run();
}
```
接口:所有方法都是抽象方法。
魔术方法(都是自动执行):
__construct(): 构造方法,实例化对象是自动执行
__destruct(): 析构方法,对象销毁时自动执行
__toString(): 给一个类增加说明书,可以直接用echo输出类
__call(): 在对象中调用一个不可访问方法时自动调用
__isset(): 当对不可访问属性调用时 isset() 或 empty() 时, 会被自动调用。
__unset(): 当对不可访问属性unset() 时,会被自动调用
__set(): 是给私有变量设置值
__get(): 是获取私有变量的值
PHP魔术常量:
__LINE__ :文件中的当前行号
__FILE__ :文件的完整路径和文件名,如果用在被包含文件中,则返回被包含的文件名。
__DIR__ :文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
__FUNCTION__ :返回该函数被定义时的名字(区分大小写)
__CLASS__ :返回该类被定义时的名字(区分大小写)
__TRAIT__ :实现了代码复用的一个方法,称为 traits
__METHOD__ :返回该方法被定义时的名字(区分大小写)
__NAMESPACE__ :当前命名空间的名称(区分大小写)