static用法及$this/self::/parent::之间区别

static用法:
1
2
3
4
5
6
7
static:
• 需要⼀个数据对象只服务于类,即类内部可⽤,对外不可⽤时。建对象是极其耗费资源的,因此当⼀个⽅法具有⽐较强的公⽤性的时候,没有必要为了调⽤这个⽅法⽽重新再⽣成该类的实例。定义的⽅法或变量在程序第⼀次加载时即驻留内存,程序结束释放。
• 静态⽅法不能被⾮静态⽅法重写,构造⽅法不允许声明为static的
static变量:
• 通过static声明的成员变量为静态变量或叫类变量,是该类的公共变量,在第⼀次使⽤时即⽣成,对于该类的所有对象只有⼀份,是属于类的,不是属于对象的。static变量是属于类⽽不属于对象,可以在任何地⽅通过类来访问,是类的全局变量,类创建时即存⼊内存。对多个对象来说,静态数据成员只存储⼀处,可以节省内存。只要对静态数据成员的值更新⼀次,保证所有对象存取更新后的相同的值。
static⽅法:
• ⽤static声明的⽅法为静态⽅法或叫类⽅法,执⾏该⽅法时不会将对象引⽤传给函数,所以我们不能访问⾮静态成员,只能访问静态⽅法或静态变量。只能使⽤关于类的⽅式如self static parent等。使⽤时不⽤⽣成对象即可执⾏
$this、self::和parent::
1
2
3
4
5
6
7
8
$this
• 是当前对象的引⽤, ⼀般出现在⽅法⾥,⽤于获取类的成员属性,或
执⾏类的成员⽅法
self::
• 对本类的引⽤ ,⽤于获取当前类的表态成员属性或静态成员⽅法
self::run()
parent::
• 对⽗类的引⽤,调⽤⽗类的⽅法或属性。