您好,欢迎访问一九零五行业门户网

PHP的单例模式代码

这篇文章介绍的内容是关于php的单例模式代码,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
单例模式,一个类只允许实例化一个对象,节约内存。
上代码:
<?php header("content-type:text/html;charset=utf8"); //定义最终的单利的数据库操作类 final class db{ private static $obj = null; //私有的数据库配置信息 private $dbhost; private $dbname; private $dbuser; private $dbpass; private $charset; //私有的构造方法 private function __construct($conf){ $this -> dbhost = $conf['dbhost']; $this -> dbuser = $conf['dbuser']; $this -> dbname = $conf['dbname']; $this -> dbpass = $conf['dbpass']; $this -> charset = $conf['charset']; $this->connectdb(); $this->selectdb(); $this->setcharset(); } //私有的克隆方法 private function __clone(){} public static function getinstance($conf){ if(!self::$obj instanceof self){ self::$obj = new self($conf); } return self::$obj; } //私有的连接数据库方法 private function connectdb(){ if(!@mysql_connect($this->dbhost,$this->dbuser,$this->dbpass)){ die('php连接mysql出错'); } } //私有的选择数据库方法 private function selectdb(){ if(!mysql_select_db($this->dbname)){ die('连接数据库出错'); } } //私有的选择字符集方法 private function setcharset(){ mysql_set_charset($this->charset); } //将sql语句分为两类,返回结果集和返回布尔值 //返回布尔值 public function exec($sql){ //将sql语句转化为小写 $sql = strtolower($sql); //判断是否为select语句 if(substr($sql,0,6) == 'select'){ die('不能执行select语句'); } return mysql_query($sql); } //私有的执行select语句(结果集不能直接展示给前端,得经过处理返给对象) private function query($sql){ //将sql语句转化为小写 $sql = strtolower($sql); //判断是否为select语句 if(substr($sql,0,6) != 'select'){ die('只能执行select语句'); } return mysql_query($sql); } //将查询到的结果集返回给前端(返回一条) public function fetchone($sql,$type=3){ $res = $this ->query($sql); $types = array( 1 => mysql_num, 2 => mysql_assoc, 3 => mysql_both, ); //返回一条记录 return mysql_fetch_array($res,$types[$type]); } //将查询到的结果集返回给前端(返回多条) public function fetchall($sql,$type=2){ $res = $this ->query($sql); $types = array( 1 => mysql_num, 2 => mysql_assoc, 3 => mysql_both, ); while($row = mysql_fetch_array($res,$types[$type])){ $arr[] = $row; } return $arr; } //公共的获取记录数的方法 public function getcount($sql){ $res= $this ->query($sql); return mysql_num_rows($res); } }
测试代码:
<?php header("content-type:text/html;charset=utf8"); //类的自动加载 spl_autoload_register(function ($classname){ $arr = array( "./libs/{$classname}.class.php", ); foreach($arr as $path){ if(file_exists($path)){ require_once($path); } } }); $arr = array( 'dbhost' => 'localhost', 'dbuser' => 'root', 'dbpass' => 'root', 'dbname' => 'test', 'charset' => 'utf8', ); $db = db::getinstance($arr); $sql = "select * from account where id = 100;"; var_dump($db->fetchone($sql,2));
以上就是php的单例模式代码的详细内容。
其它类似信息

推荐信息