静态及单例-PHP

php - 2016-07-01 04:01:05

静态及单例-PHP_第1张图片

静态变量,静态属性,静态方法。

静态变量:当你声明一个普通局部变量,在函数中调用时会在内存中申请一块空间,函数结束后,返回一个值,空间被清除。而当你申明一个静态变量时,将这个变量在函数中运算改变以后,这个静态变量不会从内存中消失,保留的值是进行运算改变后的值。静态变量应用范围比较广,可以避免多次链接。下面有一个thinkphp中的C函数的例子。

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)