利用好PHP5.3的新特性,实现单例模式
来源:互联网 发布:乐视视频无法连接网络 编辑:程序博客网 时间:2024/06/03 16:55
5.3以前也可实现,但代码较繁琐, 如下:
class MOrder extends SModel{
protected static $handle; //单例句柄
private function __construct(){
//something
}
/**
* 获取本类单例的方法,公开
*
* @return MOrder
*/
public static function instance() {
if(self::$handle){
return self::$handle;
}
$class = __CLASS__;
self::$handle = new $class();
return self::$handle;
}
//otherthing
}
5.3增加延迟静态绑定(这个词真别扭)
代码实现如下
class SModel {
/**
* 获取单例句柄,返回具体模型类的实例对象
*/
protected static function instance() {
if(static::$handle){
return static::$handle;
}
$class = get_called_class();
static::$handle = new $class();
return static::$handle;
}
//父类something
}
class MGoods extends SModel{
/**
* 获取本类单例的方法,公开
* @return MGoods
*/
public static function instance(){
return parent::instance();
}
protected static $handle; //单例句柄
protected function __construct(){
//something
}
//otherthing
}
通过修改,子类的实现代码减少一部分,转由父类实现
实话说,仍很麻烦,如果PHP自己实现singleton就好了.
- 利用好PHP5.3的新特性,实现单例模式
- 利用jdk1.8的新特性实现模板方法模式
- PHP5.3新特性
- PHP5.3新特性
- php5.3 新特性
- php5.3新特性
- PHP5.3之后的新特性
- PHP5.3的新特性解析
- php5.3以后新的特性
- [转] php5.3 PHP5.4 PHP5.5 新特性/使用PHP5.5要注意的
- php5.3 PHP5.4 PHP5.5 新特性/使用PHP5.5要注意的
- PHP5.3、PHP5.4、PHP5.5、PHP5.6的新特性
- php5.3 PHP5.4 PHP5.5 php5.6 新特性/使用PHP5.5/PHP5.6要注意的
- PHP5的XML新特性
- PHP5的XML新特性
- PHP5的XML新特性
- PHP5的XML新特性
- PHP5的XML新特性
- windows安装ZIP压缩版的Weblogic Server
- Redis源码学习之【哈希字典】
- Redis源码学习之【事件机制】
- Activity的LaunchMode和taskAffinity
- 新手
- 利用好PHP5.3的新特性,实现单例模式
- spring scheduled annotation 实例一
- 线程之pthread_barrier_create
- Redis源码学习之【epoll封装】
- Redis源码学习之【Tcp Socket封装】
- Redis源码学习之【网络通信框架】
- Spatial Pyramid的BOW和Pyramid HOG的多核
- Redis源码学习之【命令协议格式】
- 使用vfork函数时出现“总线错误”