PHP面向对象关键词static 、self
知识点:
一、static可以修饰类内的属性或方法,被修饰的属性或方法在类外部,不能被实例化成对象访问,而是使用类本身进行访问,而静态的方法如果想使用静态的属性,则需要用self::这样的写法来访问静态属性,self即代表类本身,而不是$this,$this意为实例化后的对象本身,两者有很大区别。
二、self即类本身,使用self可以帮助方法调用静态属性(因为静态属性只能被类访问)
代码:
<?php class Test{ static $one = 'q'; public function __construct(){ } static function test(){ echo '测试成功!'; } public function getone(){ return self::$one; } } echo Test::$one;//属性访问成功 Test::test();//方法执行成功 $a = new Test('s'); $res = $a->getone(); echo $res;//属性访问成功 ?>
意义:
项目中遇到很多一成不变的程序功能(例如:数据库连接),我们传入的参数相较其他程序总是传入固定参数,每次new这个类总会消耗一些资源,如果可以的话,我们想事先实例化好一个对象,每次程序需要他的时候直接对这个对象进行调用,那就OK了,这里就需要使用self+static实现对原本的类进行一些修改,使这个类自动生成对象,而我们使用这个对象即可。这个思想即单例模式。