<?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都会消耗大量的系统资源和内存资源,而且每次打开和关闭数据库都是对数据库的一种极大考验和浪费。所以单例模式经常用在数据库操作类中
通过该函数可以获取指定端口的页面源码,还能设置超时时间、自定义数据包,fsockopen 也很强大,但是比较偏底层。可以自定义设置header头信息,强大至极。$socket=fsockopen('www.jd88.net','80',$errno,$errstr,3...
function objtoarr($obj){ $ret = array(); foreach($obj as $key =>$value){ if(gettype($value) == 'arr...
因项目需要需要统计用户无限下级计算分销佣金,计算每月分红,计算无限下级团队的业绩,需要先获得某个会员的无限下级成员。先看看数据库中的member表字段id username &...
主要原理是通过PHP创建多个子进程,在子进程中发送进程闹钟信号,然后再监听闹钟信号中继续发送闹钟信号。同时通过父进程设置非阻塞运行。代码如下:<?php /** * 订单任务 */ class Order { &n...
在编写多进程的实例中我在每个进程中使用如下代码://调用等待信号的处理器 while (true) { pcntl_signal_dispatch(); }开启5个进程,cpu直接100%修正之后的代码://调用等待信号的处理器 while&...
<?php $member = new class { public function getInfo() { ...