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

PHP单例模式

高老师8年前 (2017-06-27)PHP1752
<?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验证码不显示的问题应该是经常的事情,我在这里把2种解决方案都发出来方便大家后期使用.因为是昨天晚上自己写验证码都没有显示,我就直接把之前和李炎恢老师上课写的验证码拿来还是不显示,醉了。首先是第一种方法:1、打开服务器安装目录下的php.ini文件;2、去掉;extension=php_gd.d...

PHP getenv函数和putenv函数的学习

PHP getenv函数和putenv函数的学习

(1).在PHP中可以查看的环境变量包括: (1.1).电脑环境变量 (2.1).服务器环境变量(2).getenv()函数获取一个环境变量的值.参数1是环境变量的key,参数2值为true的时候仅从你的电脑环境变量中查找,参数2值为false会从两种变量中全部查询//获取我电脑登录的用户名,输出A...

 php命令行中文乱码,php cli中文乱码

php命令行中文乱码,php cli中文乱码

<?php //如果支持exec函数,可以使用的方式 exec('chcp 65001'); //如果exec函数因安全问题禁用,可以使用的方式 pclose(popen('chcp 65001', 'r'));...

windows安装php event扩展问题

windows安装php event扩展问题

php event扩展在windows中依赖于php_sockets扩展,因此在php.ini中必须先加载php sockets扩展,如下。extension=sockets extension=event...

php redis队列实现秒杀 , php用redis 实现秒杀功能

php redis队列实现秒杀 , php用redis 实现秒杀功能

为什么使用队列?因为pop取队列具有原子性。假如我们需要秒杀一个商品id,我们先将商品的库存保存到一个队列。例如:<?php $redis = new Redis(); $redis->connect('127.0.0.1', 6...

php管道通信

php管道通信

(1).管道是干嘛的?管道是用于进程之间通信的,传播或交换信息(2).管道有几种?(2.1).匿名管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。通常是指父子进程关系。(2.2).高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中...