php单例模式没搞懂

 Eva---LiuJ 发布于 2022-11-28 17:23
classtest{privatestatic$instance;privatefunction__construct(){echo2;}publicstaticfunctiongetInstance(){if(!(self::$instanceinstanceofself)){echo1;self::$instance=newself();}returnself::$instance;}privatefunction__clone(){}}
test::getInstance();//12

self::$instance=newself()这里实例存不进静态私有变量里面啊,怎么实现单例?还是我哪里写错了?

7 个回答
  • 其实吧,你的代码没问题啊。。。

    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

    改成这样,不知道你能理解了不。。。

    2022-11-28 19:10 回答
  • 1、单例类只能有一个实例。
    2、单例类必须自己创建自己的唯一实例。
    3、单例类必须给所有其他对象提供这一实例。
    菜鸟教程里面的解释吧

    2022-11-28 19:10 回答
  • 楼主您的代码没有问题的,昨天看了不敢回答,点了关注,期待大牛解答,后面了解了下单例,其实你了解下php的运行过程你就知道单例的具体作用是什么了

    2022-11-28 19:10 回答
  • 单例没什么问题。不知道你的疑问在哪里?

    2022-11-28 19:10 回答
  • 原理很简单,就是创建一个实例的时候,如果这个实例之前没有创建过,就创建一个,如果已经创建过,就直接拿来使用。

    2022-11-28 19:10 回答
  • 之前我也问过同样的问题,已经得到了解答,链接:PHP的单例模式

    2022-11-28 19:10 回答
  • 单例模式就是你无论创建几次都是同一个对象
    为什么要用单例?

    保持单一性
    2022-11-28 19:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有