php 单例模式

自学并从事跟php已经三年了,大家都说php很简单,有语言基础一周就会,其实不然,php只是开始,后期开始接触前端,jquery,html,javascript,熟练掌握几种javascript常用类库,然后是mysql,大家以为接触增删改查完,优化弄个索引就是数据库,错了那也只是开始,(下一个月的目标开始提高数据库优化),学习的时候我们一般用wamp或者xmapp集成环境来写代码,我想大家都说lnmp环境,连初学者也说会搭建,是的,只停留在搭建上,优化呢,apache跟nginx的性能优化在哪里呢(我也在慢慢研究),怎么做大数据处理,一般人都开始讲的是数据库优化,是的,我们又要开始学习集群,学习varnish,nfs,学习把静态页面交给nginx处理,apach处理php程序。我们经常说mysql分离,但是等你碰到业务逻辑很多的时候,同步是有时间差的。渐渐就开始迷茫了,很多东西,用到开始学,不知道php到底有什么用,应该怎么通往一个高手的阶段,如何才能真正写出高性能的代码,最近开始接触设计模式跟苹果ios一些设计模式,思路变清晰了很多,慢慢觉得,写代码就像艺术一样,我想我刚接触这门艺术,我会好好加油,记录自己学习php的点点滴滴,
学习设计模式要真正运用到,而不是跟别人说它的厉害。自勉!
 
单例从字面意义上讲就是一个类只有一个实例,怎么保证呢?该类为private  保证不会被new,同时保证构造函数跟析构函数为private,__clone()也为private保证 不会被复制。
那我们应该如何调用实例类的方法呢,创造一个公用函数。来实现单例
 
场景:1,数据库,数据库打开连接跟关闭是很费系统资源跟内存资源的,而且数据库操作是最频繁的。
 
实例代码
 
<?php
 
 //私有类
 class  SingletonDatabase{
  private static $instance;
  private function __construct(){
      mysql_connect()//数据库连接函数
  }
  private  function __clone(){
  
  }
  private function  __deconstruct(){
  echo “this is a private construct”;
  }
  public static function getInstance(){
  if(!(self::$instance instance self)){
  self:$instance=new self();
  }
  return  self::$instance;
  }
  public function query(){
  msyql_query()//数据库查询
  }
}
 
//客户端代码
SingletonDatabase::getInstance()->query();

 

posted on 2015-04-17 00:21  varliny  阅读(146)  评论(0)    收藏  举报

导航