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

PHP单例模式

高老师9年前 (2017-06-27)PHP2002
<?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对象转数组

function objtoarr($obj){ $ret = array(); foreach($obj as $key =>$value){ if(gettype($value) == 'arr...

php无限查询下级,php递归统计下级总数,php 获取无限子级

php无限查询下级,php递归统计下级总数,php 获取无限子级

因项目需要需要统计用户无限下级计算分销佣金,计算每月分红,计算无限下级团队的业绩,需要先获得某个会员的无限下级成员。先看看数据库中的member表字段id            username       &...

php scoket,php webscoket,php webscoket 服务器

php scoket,php webscoket,php webscoket 服务器

项目需要使用websocket推送最新订单,客户服务器非linux不支持swoole,因此使用原生,直接上代码(1).PHP服务端<?php ini_set('error_reporting', E_ALL ^ E_NOTICE); ini_set...

PHP中的ArrayAccess用法详解

PHP中的ArrayAccess用法详解

php arrayaccess 官方的说法是让你能以数组的形式访问对象,对于这种php内置接口一直不太明白有什么用,坚持多看文章,终于理解,特来分享,思路不同,更易于理解。(1).创建一个学生类,并且实现arrayaccess 接口。<?php class  studen...

PHP getenv函数和putenv函数的学习

PHP getenv函数和putenv函数的学习

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

cookie跨域,cookie p3p跨域

cookie跨域,cookie p3p跨域

最近在公司开发一个新的项目假设项目域名是a.com,需要接入b.com的单点登陆系统。(1).首先我们会在a.com的登陆页面用iframe引入b.com来显示登陆界面,实际上登陆验证操作都是在b.com上面(2).当b.com验证通过,会在前端ajax请求a.com的回调地址,这个回调地址目的就是...