• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

php设计模式之单例模式实例(设计mysqli连接数据的数据处理类)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一直在研究php的设计模式,但是没有亲历使用过,所以还是一知半解,通过几天的学习终于对php的单例设计模式稍稍的有些了解,特此写出一个数据库处理类(只涉及到简单的原理),以便自己以后方便查阅,至于其他设计模式我会慢慢理解,然后会以实例的形式发布到该博客:

/**
 * 单例模式
 */
class Db{
    private static $mysqli;//该类中的唯一一个实例
    private function __construct(){}//防止在外部实例化该类
    private function __clone(){}//禁止通过复制的方式实例化该类
    public static function connect(){//数据库连接方法
        self::$mysqli = new MySQLi("localhost","root","","test");
        self::$mysqli->query("set names utf8");
    }
    public static function select($table){//数据库操作方法,后续可以继续完善和添加......
        self::connect();
        $result = self::$mysqli->query("select * from ".$table);
        $result_arr = array();
        while($query = $result->fetch_assoc()){
            $result_arr[]    = $query;
        }
        return $result_arr;//结果集以数组的形式返回
    }
}
$result = Db::select("article");
echo '<pre>';
print_r($result);
echo '</pre>';

 还有第二种写法:如下

class Db{
    private static $_instance = null;//该类中的唯一一个实例
    private $dbConn;
    private function __construct(){//防止在外部实例化该类
        $this->dbConn = new MySQLi("localhost","root","","test");
        $this->dbConn->query("set names utf8");
    }
    private function __clone(){}//禁止通过复制的方式实例化该类
        
    public static function getInstance(){
        if(self::$_instance == null){
            self::$_instance = new self();    
        }
        return self::$_instance;
    }
    
    public function select($table){//数据库操作方法,后续可以继续完善和添加......
        $result = $this->dbConn->query("select * from ".$table);
        $result_arr = array();
        while($query = $result->fetch_assoc()){
            $result_arr[]    = $query;
        }
        return $result_arr;//结果集以数组的形式返回
    }
}
$db = Db::getInstance();
$result = $db->select('article');
echo '<pre>';
print_r($result);
echo '</pre>';

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP与MYSQL事务处理发布时间:2022-07-10
下一篇:
php的三种CLI常量:STDIN,STDOUT,STDERR发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap