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();
浙公网安备 33010602011771号