加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

基于php设计模式中单例模式的应用解析

发布时间:2022-07-14 13:22:53 所属栏目:PHP教程 来源:互联网
导读:单例模式:简单的说,一个对象只负责一个特定的任务。 单例类: 1.构造函数需要标记为private,单例类不能再其他类中实例化,只能被其自身实例化 2.拥有一个保存类的实例静态成员变量 3.拥有一个访问这个实例的公共的静态方法。[常用getInstance()方法进行
  单例模式:简单的说,一个对象只负责一个特定的任务。
 
  单例类:
  1.构造函数需要标记为private,单例类不能再其他类中实例化,只能被其自身实例化
  2.拥有一个保存类的实例静态成员变量
  3.拥有一个访问这个实例的公共的静态方法。[常用getInstance()方法进行实例化单例类,通过instanceof操作符可以检测到此类是否已经被实例化]
  注:需要创建__clone()方法防治对象被复制
  作用:
  1.php的应用主要用于数据库,所以一个应用中会存在大量的数据库操作,使用单例模式,则可以避免大量new操作消耗的资源
  2.如果系统中需要一个类来全局控制某些配置信息,那么使用单例模式可以很方便的实现。参照ZF的FrontController部分
  3.在一个页面请求汇总,便于进行调试,因为所有的代码都集中在一个类中,我们可以在类中设置钩子,输出日志,从而避免到处var_dump,echo。
 
  复制代码 代码如下:www.CuoXIn.com
 
  <?php
  class DanLi{
  //静态成员变量
  private static $_instance;
  //私有的构造方法
  private function __construct(){
  }
  //防止对象被克隆
  public function __clone(){
  trigger_error('Clone is not allow!',E_USER_ERROR);
  }
  public static function getInstance(){
  if(!(self::$_instance instanceof self)){
  self::$_instance = new self;
  }
  return self::$_instance;
  }
  public function test(){
  echo "ok";
  }
  }
 
  //错误:$danli = new DanLi(); $danli_clone = clone $danli;
  //正确:$danli = DanLi::getInstance(); $danli->test();
 
  ?>。
 

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读