PHP设计模式之工厂模式与单例模式
本文实例讲述了PHP设计模式之工厂模式与单例模式实现方法。分享给大家供大家参考,具体如下:
设计模式简单说应对某类问题而设计的解决方式
工厂模式:应对需求创建相应的对象
classfactory{ function__construct($name){ if(file_exists('./'.$name.'.class.php')){ returnnew$name; }else{ die('notexist'); } } }
单例模式:只创建一个对象的实例,不允许再创建实例,节约资源(例如数据库的连接)
classinstance{ public$val=10; privatestatic$instance; privatefunction__construct(){} privatefunction__clone(){} //设置为静态方法才可被类调用 publicstaticfunctiongetInstance(){ /*if(!isset(self::$instance)){ self::$instance=newself; }*/ if(!isset(instance::$instance)){ instance::$instance=newself; } returninstance::$instance; } } $obj_one=instance::getInstance(); $obj_one->val=20; //clone可以调用__clone()克隆即new出一个新的的对象 //$obj_two=clone$obj_one; $obj_two=instance::getInstance(); echo$obj_two->val; echo'<p>'; var_dump($obj_one,$obj_two);
运行结果如下:
20 object(instance)[1] public'val'=>int20 object(instance)[1] public'val'=>int20
应用:数据库连接类(databaseaccessoject)
classmysqldb{ private$arr=array( 'port'=>3306, 'host'=>'localhost', 'username'=>'root', 'passward'=>'root', 'dbname'=>'instance', 'charset'=>'utf8' ); private$link; static$instance; privatefunction__clone(){} privatefunction__construct(){ $this->link=mysql_connect($this->arr['host'],$this->arr['username'],$this->arr['passward'])ordie(mysql_error()); mysql_select_db($this->arr['dbname'])ordie('dberror'); mysql_set_charset($this->arr['charset']); } staticpublicfunctiongetInsance(){ if(!isset(mysqldb::$instance)){ mysqldb::$instance=newself; } returnmysqldb::$instance; } publicfunctionquery($sql){ if($res=mysql_query($sql)){ return$res; }returnfalse; } //fetchone publicfunctionget_one($sql){ $res=$this->query($sql); if($result=mysql_fetch_row($res)){ return$result[0]; } } //fetchrow publicfunctionget_row($sql){ $res=$this->query($sql); if($result=mysql_fetch_assoc($res)){ return$result; } returnfalse; } //fetchall publicfunctionget_all($sql){ $res=$this->query($sql); $arr=array(); while($result=mysql_fetch_assoc($res)){ $arr[]=$result; } return$arr; } } $mysql=mysqldb::getInsance();
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。