如何用代码简单说明PHP单例模式
Admin 2022-09-17 群英技术资讯 480 次浏览
使用注意事项: 1.使用时不能用反射模式创建单例,否则会实例化一个新的对象 2.使用懒单例模式时注意线程安全问题 3.饿单例模式和懒单例模式构造方法都是私有的,因而是不能被继承的,有些单例模式可以被继承(如登记式模式)
<?php /** * Created by PhpStorm. * auther: sgj * Date: 2019/9/5 * Time: 20:58 */ /* 1.单例模式只能通过自身进行实例化 2.拥有一个保存对象实例的静态成员变量 3.拥有一个访问这个实例的公共静态方法(常用getInstance()方法进行实例化单例类 ) 4.通过instanceof操作符可以检测到类是否已经实例化了 */ class single { /** * 私有构造函数 * single constructor. */ private function __construct() { } /** * 私有的构造函数防止克隆 */ private function __clone() { // TODO: Implement __clone() method. } /*存储实例的静态方法*/ private static $interion; /** * 通过这个来获取实例 * @return single */ public function getInstance(){ if (empty($interion)){ self::$interion=new single(); } return self::$interion; } }
1.单例模式只能通过自身进行实例化
2.拥有一个保存对象实例的静态成员变量
3.拥有一个访问这个实例的公共静态方法(常用getInstance()方法进行实例化单例类 )
4.通过instanceof操作符可以检测到类是否已经实例化了
单例模式的优点:
一个php进程只会实例化出一个单例 ,减少了内存占用减少资源占用。比如说你的调整了php的进程数,随着php进程数的增加需要注意到mysql连接数的数量。因为php mysql采用了单例模式,你的PHP进程数就是mysql的连接数。(此时也需要注意你的mysql连接数必须大于
你php的进程数,否则就等待mysql 释放连接 导致等待从而导致多米诺似的系统崩溃)
单例模式的缺点:
没有抽象层难以扩展 不适合变化性较强的实例单例类的职责过重,在一定程度上违背了“单一职责原则”。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
下面由Laravel教程栏目给大家介绍laravel hasManyThrough用法及参数,希望对大家有所帮助!
$date=date("Ymd",time()); $url="http://api.goseek.cn/Tools/holiday?date=".$date; $res=file_get_contents($url); //json格式,前端需要直接提供 $res=json_decode($res,true); //数组格式,方便后端判断 2.文档:htt
在laravel中,chunk()方法用于将集合分割为多个指定大小的较小集合,语法为“$指定集合->chunk(指定数量);”;该方法会对各个用户数据进行更新后再查看各个用户数据,这样在查询数据时没有获取大量数据,能够减轻系统的压力。
die()是PHP的内置功能。用来打印消息,退出当前的php脚本。die()函数只接受一个参数,而不是必须传输的参数。$message参数表示退出脚本时打印的信息。
PHP导出数据超时怎么办?一般来说PHP导出数据超时可能是sql语句复杂,查询时间过长、处理查询后数据逻辑冗余和数据量过大导致响应超时这三种情况造成的,想要解决超时问题优化必不可少,因此我们可以从这三方面入手优化。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008