PHP里的单例类写法实例
PHP里的单实例类在进行数据交换,节省内存上还是很有意义的。写个简单例子。
类1,单实例类本身:
classUTIL{ privatestatic$instance; publicfunctionget(){ if(!self::$instance){ self::$instance=newUTIL(); } returnself::$instance; } public$number=10; publicfunctionchange($num){ $this->number+=$num; } publicfunctiongetNum(){ return$this->number; } }
类2,使用前述单实例类的应用类:
classSINGLEA{ private$numInst; function__construct(){ $this->numInst=UTIL::get(); } publicfunctionchange($num){ $this->numInst->change($num); } publicfunctiongetNum(){ return$this->numInst->getNum(); } }
类3,同类2:
classSINGLEB{ private$numInst; function__construct(){ $this->numInst=UTIL::get(); } publicfunctionchange($num){ $this->numInst->change($num); } publicfunctiongetNum(){ return$this->numInst->getNum(); } }
最后是调用的地方:
$instA=newSINGLEA(); $instA->change(100); var_dump('SINGLEACHANGED:'); var_dump($instA->getNum()); $instB=newSINGLEB(); $instB->change(-510); var_dump('SINGLEBCHANGED:'); var_dump($instB->getNum());
最后的显示结果:
string'SINGLEACHANGED:'(length=17) int110 string'SINGLEBCHANGED:'(length=17) int-400