<?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都会消耗大量的系统资源和内存资源,而且每次打开和关闭数据库都是对数据库的一种极大考验和浪费。所以单例模式经常用在数据库操作类中
php官方已经提供了Iterator(迭代器)接口,通过网上资料的学习,目前看适合超大集合或者数组提取使用。学习一个函数的实现对比内存占用差距.使用迭代器和普通循环实现range()函数。(1).普通循环实现range()函数。function newrange($low, $h...
(1).config.php 配置文件<?php /** * RabbitMQ_Config */ $config = [ 'host' => ...
<?php /** * daemonize让当前脚本为守护进程执行 * @param string $callback 匿名函数 */ function daemonize($callback) {...
自己的composer已经发布到packagist,但是无法使用composer require easy-task/easy-task来安装,只能在配置文件使用如下方式安装:"require": { "easy...
断点下载的原理:http请求头添加Range参数告诉文件服务器端需要的字节范围例如1个文本文件的字节为1000,第一次请求Range: bytes=0-500第二次请求Range: bytes=501-1000通过每次的请求将返回的流追加写入到文件。注意的项目:断点下载服务器端的每次只返回字节传输的...
文章篇幅较长,如果不喜欢看文章的,此处抛出韩顺丰老师的位运算视频,韩老师应该是全网讲php位运算符最详细的一个老师了。链接:https://pan.baidu.com/s/14xj7er8eVSUcJ-jYXyA0GA 提取码:731m 链接:https://pan.baidu.com...