
静态变量
当你声明一个普通局部变量,在函数中调用时会在内存中申请一块空间,函数结束后,返回一个值,空间被清除。
而当你申明一个静态变量时,将这个变量在函数中运算改变以后,这个静态变量不会从内存中消失,保留的值是进行运算改变后的值。静态变量应用范围比较广,可以避免多次链接。
下面有一个 thinkphp3.2 版本的内置函数:
public function C($k,$v){
static $cfg = array();
$cfg[$k] = $v;
return $cfg;
}
静态属性,静态方法
不依赖于对象即可调用某个类里面的属性或方法,
这个类里面的属性和方法前加 static。
反正我是没用过其他的,其中一个单例模式 还是有用到。传说中可以用作接口,还有说直接调用类里面的方法和属性,比实例化一个后再调用速度更快的,在我看来这种速度比较一文不值。
单例模式的意义在于控制对象只能被实例化一次,并且是被自身 new,防止外部 new。
class Link{
protected static $link = null;
protected function __construct(){ //被自身调用的时候会触发
$this->link = mysql_connect('localhost','root','');
}
private fucntion __clone(){ } //外部克隆自动触发这个方法,这个方法是私有,会报错。
public static function getlink(){ //没有链接资源就 new 自身创建一个资源,已经有的话直接返回。
if($link==null){
self :: link = new self();
}
return self::link;
}
}
这里用到了静态方法和静态变量,静态方法不用再被 new 了,直接调用 Link::getlink() ,就会返回一个链接资源,保存起来返回的值就可以直接使用了。
原文链接:静态及单例-PHP
网友评论