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实现对原本的类进行一些修改,使这个类自动生成对象,而我们使用这个对象即可。这个思想即单例模式。

posted @ 2017-06-03 11:34  程昱仲德  阅读(215)  评论(0编辑  收藏  举报