仅供自己学习
php单例模式
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。
要点主要有三个:
1.一个类只能有一个对象;
2.必须是自行创建这个类的对象;
3,要想整个系统提供这一个对象;
从具体实现角度来说,就是以下三点:
一是单例模式的类只提供私有的构造函数,
二是类定义中含有一个该类的静态私有对象,
三是该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。
当然还要有一个private的clone方法,防止克隆;
1 <?php
2 //单例
3 class Uni{
4 //创建静态私有的变量保存该类对象
5 static private $instance;
6 //参数
7 private $config;
8 //防止直接创建对象
9 private function __construct($config){
10 $this -> config = $config;
11 echo "我被实例化了";
12 }
13 //防止克隆对象
14 private function __clone(){
15
16 }
17 static public function getInstance($config){
18 //判断$instance是否是Uni的对象
19 //没有则创建
20 if (!self::$instance instanceof self) {
21 self::$instance = new self($config);
22 }
23 return self::$instance;
24
25 }
26 public function getName(){
27 echo $this -> config;
28 }
29 }
30 $db1 = Uni::getInstance(1);
31 $db1 -> getName();
32 echo "<br>";
33 $db2 = Uni::getInstance(4);
34 $db2 -> getName();
35 ?>
运行结果:
我被实例化了1
1
$db1创建对象后,参数是1
$db2没有创建对象,而是直接使用$instance保存的唯一对象,所以输出的参数并没有变为4;
原文链接:https://www.cnblogs.com/wwjchina/p/7724271.html
原文:https://www.cnblogs.com/chenhaoyu/p/9063343.html