当前位置:首页 > PHP > 正文内容

PHP单例模式

高老师8年前 (2017-06-27)PHP1780
<?php
/*
 * 
 单粒模式,只能造出一个对象
 1.肯定每次new只能返回一个对象,可以使用静态方法解决
 2.子类继承也禁止重写构造方法,添加final搞定
 * 
 */
 
 
//1.普通类的实例,得到2个对象
// class  Single{
//  
// public $rand;
// 
// public function __construct(){
// $this->rand=mt_rand(1000000, 9999999999);
// }
// 
// }
// 
// var_dump(new Single());
// var_dump(new Single());
 
 
 
//2.单例模式,得到1个对象
 class  Single{
  
 
public $rand;
static $obj;
 
final protected function __construct(){
$this->rand=mt_rand(1000000, 9999999999);
}
 
//不使用静态方法就无法new
static function  getins(){
//判断是否已经实例化
if(self::$obj==null){
self::$obj=new Single();
}
return self::$obj;
 
}
 
 }
 
 
 
//测试子类继承,需要实例化子类,只能使用静态方法
 class Test extends Single{
 
 
 }
 
 
 
 
var_dump(Single::getins());
var_dump(Single::getins());
 
?>

PHP的大多数应用中都会存在大量的数据库操作,如果不用单例模式,那每次都要new操作,但是每次new都会消耗大量的系统资源和内存资源,而且每次打开和关闭数据库都是对数据库的一种极大考验和浪费。所以单例模式经常用在数据库操作类中

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/15.html

分享给朋友:

“PHP单例模式” 的相关文章

PHP计算两个字符串的相似度

PHP计算两个字符串的相似度

<?php echo similar_text("Hello World","Hello Shanghai"); ?> 2.计算两个字符串的相似度,并返回百分比 <?php similar_text("...

PHP可变变量的作用

PHP可变变量的作用

<!doctype html> <html> <head> <meta charset="utf-8"> <title>demo</title> </head> <bod...

php生成验证码

php生成验证码

<?php //高先生简单验证码. //随机数 //为什么循环0-15的数字 //因为要实现最简单的字母和数字混搭 //16进制0-9   a-f //dechex 十进制转换为16进制 //创建一个四位的验证码. //$nmsg.  ...

php arrayaccess的应用场景:配置管理器

php arrayaccess的应用场景:配置管理器

上篇文章已经讲解arrayacces的原理,现在来讲解下arrayaccess的实际应用。一个大型的互联网项目中必然会存在各种配置信息,例如多种数据库信息:mysql,tidb,mongodb,redis,某个业务模块单独的配置信息如比例,额度等等,那么该如何治理配置信息?PHP项目中大部分的框架都...

redis订阅和发布,redis消息订阅与发布, phpredis订阅和发布

redis订阅和发布,redis消息订阅与发布, phpredis订阅和发布

Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者(publisher),订阅者(subscriber)和频道(channel)。 发布者和订阅者都是Redis客户端,Channel则为Redis服务器端,发布者将消息发送到某个的频道,订阅了这个...

php异步信号处理

php异步信号处理

php7.1引入了PHP异步信号处理函数pcntl_async_signals() 来处理阻塞问题。在php7之前信号处理方式有2种,第一种是基于ticks来每执行一行代码来触发执行信号监听,第二种是直接while(true){  //监听信号 }第一种方式如果某行的代码阻塞时间较长会影响...