静态及单例-PHP

2020-08-21  本文已影响0人  与子笑
only a flower

静态变量

当你声明一个普通局部变量,在函数中调用时会在内存中申请一块空间,函数结束后,返回一个值,空间被清除。

而当你申明一个静态变量时,将这个变量在函数中运算改变以后,这个静态变量不会从内存中消失,保留的值是进行运算改变后的值。静态变量应用范围比较广,可以避免多次链接。

下面有一个 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

上一篇 下一篇

猜你喜欢

热点阅读