飞嗨,欢迎您的光临,本博所发布之文章皆为作者亲测通过,如有错误,欢迎通过各种方式指正。(本博已于2015.12.6升级到php7,运行环境php7 php-fpm + nginx1.8.0)

php单例模式

PHP lf 1731℃ 0评论

一不小心,就码代码好几年咯。对于php脚本语言来说,什么算法、设计模式好像也不怎么关心,毕竟php也不做计算密集型,感觉,系统只要一做大,就会用java c c++来重构php代码,或者干脆像facebook用c++重新写个hhvm解析引擎。想想,自己何时能参与一个这么流弊的项目捏。慢慢的也去了解设计模式等等,最近有偶尔看看yii2框架源码。然后,想起了很久之前别人提的单例模式。

单例模式

单例模式


单例模式应用:
1.使用单例模式,可以避免大量new操作消耗资源
2.如果系统中需要有一个类来全局控制某些配置信息,使用单例模式可以很方便实现
3.在一次页面请求中,便于进行调试,因为所有的代码(例如数据库操作类)都集中在一个类中,可以在类中设置狗子,输出日志,从而避免var_dump,echo
单例模式(职责模式)。一个对象只负责一个特定的人物:
1.构造函数需要为private,防止外部代码使用new操作符创建对象,单例类只能被自身实例化
2.拥有一个保存类的实例的静态成员变量
3.拥有一个访问这个实例的公共的静态方法(常用getInstance()方法进行实例化单例类,通过instanceof操作符可以检测到类是否已经被实例化)
4.需要创建__clone()方法防止对象被复制

<?php 
namespace  ext\Help; 
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; 
   } 
}

转载请注明:飞嗨 » php单例模式

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情
粤ICP备15018643号-1