网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 php设计模式之单例模式
内容
    单例模式 :使得类的一个对象成为系统中的唯一实例.
    php中使用单例模式最常见的就是数据库操作了。避免在系统中有多个连接数据库的操作,浪费系统资源的现象,就可以使用单例模式。每次对数据库操作都使用一个实例。
    简单示例
    class aclass {
    // 用来存储自己实例
    public static $instance;
    // 私有化构造函数,防止外界实例化对象
    private function __construct() {}
    // 私有化克隆函数,防止外界克隆对象
    private function __clone() {}
    // 静态方法,单例访问统一入口
    public static function getinstance() {
    if (!(self::$instance instanceof self)){
    self::$instance = new self();
    }
    return self::$instance;
    }
    // test
    public function test() {
    return done;
    }
    // 私有化克隆函数,防止外界克隆对象
    private function __clone() {}
    }
    class bclass extends aclass{
    }
    // 获取实例
    $aclass = aclass::getinstance();
    $bclass = bclass::getinstance();
    // 调用方法
    echo $aclass->test();
    对一些比较大型的应用来说,可能连接多个数据库,那么不同的数据库公用一个对象可能会产生问题,比如连接句柄的分配等,我们可以通过给$instance变成数组,通过不同的参数来控制
    简单示例
    class db {
    // 用来存储自己实例
    public static $instance = array();
    public $conn;
    // 私有化构造函数,防止外界实例化对象
    private function __construct($host, $username, $password, $dbname, $port) {
    $this->conn = new mysqli($host, $username, $password, $dbname, $port);
    }
    // 静态方法,单例访问统一入口
    public static function getinstance($host, $username, $password, $dbname, $port) {
    $key = $host.:.$port;
    if (!(self::$instance[$key] instanceof self)){
    self::$instance[$key] = new self($host, $username, $password, $dbname, $port);#实例化
    }
    return self::$instance[$key];
    }
    //query
    public function query($ql) {
    return $this->conn->query($sql);
    }
    // 私有化克隆函数,防止外界克隆对象
    private function __clone() {}
    //释放资源
    public function __destruct(){
    $this->conn->close();
    }
    }
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/16 1:33:30