PHPSingleton模式的例子

时间:2021-04-26 02:41:42

在这篇文章中PHPSingleton模式的解释不一定好!仅举它的一个例子。其目的是为了让自己通过一个例子来加深对Singleton模式的理解!这里,以供参考!

单例:能够简单的理解是通过一个类,仅仅能实例化单个对象,不能实例化多个对象!

class e {

public $uname;

static $obj = NULL;      //定义一个静态属性

private function __construct() {    //在构造方法前使用private属性,目的是不能在类的外部实例化对象。

//即不能$a=new e();

}                                                        //假设要使用newkeyword来实例化对象就会调用该构造函数,

//而该函数已经被修饰为private,此时使用newkeyword实例化对象时会报错。

static function getObj() {

if (is_null(self::$obj)) {

self::$obj = new e();        //在类的内部实例化对象赋给静态属性;在第一次实例化对象时。

}                                            
 //$obj会被赋值,以后再实例化对象时,

return self::$obj;                  //由于有这里的推断所以不会反复实例对象仅仅会实例化一次对象;

}                                                  //多次实例化对象时。仅仅是把对象的引用赋值给了变量,不会再次实例化对象

}

$d = e::getObj();

$d->uname = 100;

echo $d->uname;        //100

$e = e::getObj();

$e->uname = 200;

echo $d->uname;        //会输出200。$d对象的uname值也被该表了,由于$e和$d指向同一个对象

echo $e->uname;        //输出200

版权声明:本文博主原创文章。博客,未经同意不得转载。