classtest{privatestatic$instance;privatefunction__construct(){echo2;}publicstaticfunctiongetInstance(){if(!(self::$instanceinstanceofself)){echo1;self::$instance=newself();}returnself::$instance;}privatefunction__clone(){}}
test::getInstance();//12
self::$instance=newself()这里实例存不进静态私有变量里面啊,怎么实现单例?还是我哪里写错了?
其实吧,你的代码没问题啊。。。
classtest{private$props=[];privatestatic$instance;privatefunction__construct(){echo2;}publicstaticfunctiongetInstance(){if(!(self::$instanceinstanceofself)){echo1;self::$instance=newself();}returnself::$instance;}privatefunction__clone(){}publicfunctionsetProp($key,$val){$this->props[$key]=$val;}publicfunctiongetProp($key){return$this->props[$key];}}$a=test::getInstance();//12$b=test::getInstance();//没有输出$a->setProp("name","zhangsan");echo$b->getProp("name");//zhangsan
改成这样,不知道你能理解了不。。。
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
楼主您的代码没有问题的,昨天看了不敢回答,点了关注,期待大牛解答,后面了解了下单例,其实你了解下php
的运行过程你就知道单例的具体作用是什么了
单例没什么问题。不知道你的疑问在哪里?
原理很简单,就是创建一个实例的时候,如果这个实例之前没有创建过,就创建一个,如果已经创建过,就直接拿来使用。
之前我也问过同样的问题,已经得到了解答,链接:
单例模式就是你无论创建几次都是同一个对象
为什么要用单例?
保持单一性