PHP 单例模式代码片段
2023-09-11 14:17:03 时间
1 <?php 2 3 error_reporting(E_ALL | E_STRICT); 4 5 class single{ 6 7 public $hash; 8 9 static protected $ins = null; 10 11 final protected function __construct(){ //final 能被继承,不能被重写(防止子类重写构造方法) 12 $this->hash = mt_rand(1,9999); 13 } 14 15 static public function getInstance(){ 16 if(self::$ins instanceof self){ //instanceof 判断某个对象是不是某个类的实例 17 return self::$ins; 18 } 19 self::$ins = new self(); 20 return self::$ins; 21 } 22 } 23 24 $s1 = single::getInstance(); 25 $s2 = single::getInstance(); 26 27 var_dump($s1); 28 var_dump($s2); 29 30 //son类继承single类 31 class son extends single{ 32 } 33 34 $s1 = son::getInstance(); 35 $s2 = son::getInstance(); 36 37 var_dump($s1); 38 var_dump($s2);
页面输出
object(single)[1] public 'hash' => int 9762 object(single)[1] public 'hash' => int 9762 object(single)[1] public 'hash' => int 9762 object(single)[1] public 'hash' => int 9762
主要思路:
1. 保护或者私有构造函数,防止外部实例化
2. 内部开放一个公共的静态方法,负责实例化
3. 类有一个静态属性,用于存放对象
当静态属性已经存放对象时,直接 return 该对象,否则实例化该类,然后 return 对象。
相关文章
- php设计模式-注册树模式
- 全面解读php-函数
- 实例化和设置一个优秀的php对象
- RabbitMQ+PHP 消息队列环境配置
- php之道
- linux+apache+mysql+php平台构建及环境配置
- php合并多维数组,递归合并
- php 计算剩余时间
- PHP全栈学习笔记23
- php抽奖代码
- PHP 设计模式 笔记与总结(9)数据对象映射模式
- 《PHP、MySQL和Apache入门经典(第5版)》一2.5 在Windows上安装MySQL
- PHP字符串比较,看起来值完全一样,但是就是不相等的解决方案(‌)
- PHP 小tip .(@)符号和 php if 赋值
- php判断对象是否为空
- js中表达式 >>> 0 浅析 (以及用php简单翻译)
- 代理模式和php实现
- PHP运行模式
- php面试题之三——PHP语言基础(基础部分)
- PHP之旅——出发(php+apache+MySQL)
- php策略模式