<?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官方的超全局变量$_SERVER['PHP_SELF']也能直接获取,只不过如果url参数太多也会获取。下面提供一个方法获取/* * 获取当前PHP文件名称 */ if (!function_exists('phpself...
项目中使用服务来执行webservice,由于对方系统api不稳定,经常导致服务崩溃,只能重启,一个月差不多要重启一次。初期的解决办法是捕获异常,然后continue掉。<?php try { $url = 'http...
(1).前端文件:<form action="upload.php" method="post" enctype="multipart/form-data"> &...
【一】.介绍session由于HTTP是无状态的请求,创建一个会话需要保持必须需要身份标识。当用户第一次访问,PHP会为用户创建一个唯一的sessionid,并将sessionid通过cookie发送给浏览器,并在服务器的临时文件创建一个以sessionid为名的文件用来保存这个sessionid保...
主要原理是通过PHP创建多个子进程,在子进程中发送进程闹钟信号,然后再监听闹钟信号中继续发送闹钟信号。同时通过父进程设置非阻塞运行。代码如下:<?php /** * 订单任务 */ class Order { &n...
参数中包含gb2312的字符串,返回结果是false或者null(不同PHP版本具有差异性)代码:<?php $dbms = 'mysql'; $host = '192.168.8.8'; $dbName =&n...