设计模式PHP版 - 单例模式
时间:2019-03-25
本文章向大家介绍设计模式PHP版 - 单例模式,主要包括设计模式PHP版 - 单例模式使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
单例可以用于产生唯一不重复的数字码,比如订单号。
<?php
final class Mysql // final 表示不允许被继承
{
/**
* @var self 用于保存实例
*/
private static $instance;
/**
* @var int
*/
public $int;
/**
* 实例化对象
*
* @return self
*/
public static function getInstance()
{
if (!(self::$instance instanceof self)) { // 判断这个类是否已被实例化了(如果!($instance是对象且属于Mysql类))
self::$instance = new self(); // 第一次调用时,$instance只是一个初始化变量,所以不会是对象。就进行实例化
}
return self::$instance; // 已经实例化过了就直接返回该实例
}
/**
* 构造函数为私有,这样就不能new了
*/
private function __construct()
{}
/**
* 防止对象被复制
*/
private function __clone()
{
trigger_error('Clone is not allowed !'); // 返回一个错误
}
}
/**
* 无论这里产生多少个,它们都是同一个实例,因为实例化过了就会return
*/
$mysql1 = Mysql::getInstance(); // 获取实例
$mysql2 = Mysql::getInstance(); // 获取实例
$mysql3 = Mysql::getInstance(); // 获取实例
/**
* 在同一个实例的情况下,给int赋值,就会覆盖
*/
$mysql1->int = 1;
$mysql2->int = 2;
$mysql3->int = 3;
/**
* 此时,还是同一个实例,上面最后覆盖的是3,那么这里就是打印了三次实例中的int变量
*/
print_r($mysql1->int);
print_r($mysql2->int);
print_r($mysql3->int);
如果以new的形式,最终打印结果就是123。
但是单例使用了静态修饰,当进入页面并使用了这个类时开始,直到页面执行完毕前,这个$instance
都会一直存于内存。
所以当你Mysql::getInstance();
获取实例的时候,其实获取的都是内存中同一个$instance
- 让WordPress RSS/Feed订阅数据延迟发布,附RSS技巧集锦
- Linux系统防CC攻击自动拉黑IP增强版Shell脚本
- 利用artDialog给网站添加一个能显示搜索来路和关键词的欢迎框
- 解决启用wp super cache缓存后,页面追加多个斜杠仍然可以访问的隐患
- WordPress集成底部滚动推荐条,让好文章不再被埋没
- go语言base64加密解密的方法
- WordPress酷炫CSS3读者墙,排名按年度、本月、本周划分的小方法
- WordPress给文章添加百度是否已收录查询和显示功能(自定义栏目优化版)
- PHP制作百度站内搜索绿色通道的网页列表数据文件
- 分享几个可用的二维码API,以及给博客添加文章二维码图片的方法
- AI即开即用,这是悄然推出的“腾讯最新AI技术”小程序
- Android Linker 与 SO 加壳技术
- Go语言操作mysql数据库简单例子
- go语言的sql包原理与用法分析
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC