您的当前位置:首页>全部文章>文章详情

php设计模式之单例模式(singleton)

发表于:2019-08-16 10:13:22浏览:50次TAG:
单例模式是最常见的模式之一,在Web应用的开发中,常常用于允许在运行时为某个特定的类创建仅有一个可访问的实例。 ```php _pdo = new PDO($config['dsn'], $config['user'], $config['password'], array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES '".$config['charset']."';")); // $this->_pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); // $this->_pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $this->_pdo = $config; echo("连接{$config}数据库....\n"); } /** * 防止对象被复制 */ private function __clone(){ trigger_error('Clone is not allowed !'); } /** * Return self instance[创建一个用来实例化对象的方法] * * @return self */ public static function getInstance($config) { if (empty(self::$instance)) { echo("实例化了对象\n"); self::$instance = new self($config); } return self::$instance; } //获取pdo实例 public function getPdo() { echo("获取pdo实例\n"); return $this->_pdo; } } // @test $firstMysql = Mysql::getInstance("127.0.0.1"); // 实例化了对象 // 连接127.0.0.1数据库.... $firstMysql->getPdo(); // 获取pdo实例 $secondMysql = Mysql::getInstance("127.0.0.1"); $secondMysql->getPdo(); // 获取pdo实例 ``` 输出 ```bash vagrant@vagrant-ubuntu:~$ sudo php singleton.php 实例化了对象 连接127.0.0.1数据库.... 获取pdo实例 获取pdo实例 ``` #### 多个类创建单例的构造方式 ```php a[] = 1; // 创建实例 : FirstProduct SecondProduct::getInstance()->a[] = 2; // 创建实例 : SecondProduct FirstProduct::getInstance()->a[] = 11; SecondProduct::getInstance()->a[] = 22; print_r(FirstProduct::getInstance()->a); // Array ( [0] => 1 [1] => 11 ) print_r(SecondProduct::getInstance()->a); // Array ( [0] => 2 [1] => 22 ) ``` 输出 ```bash vagrant@vagrant-ubuntu:~$ sudo php singleton2.php 创建实例 : FirstProduct 创建实例 : SecondProduct Array ( [0] => 1 [1] => 11 ) Array ( [0] => 2 [1] => 22 ) ```
栏目分类全部>
腾讯云采购季云服务器一折促销