PHP单例模式、实例代码
发布时间:2017-08-07, 15:23:26 分类:PHP | 编辑 off 网址 | 辅助
正文 1061字数 48,771阅读
在PHP中实例化一个对象,就会新开辟一个新内存空间,当一些业务要实例化多个对象时,会占用大量内存。这个问题可以用单例模式解决。我们实例化对象可以直接new出来,也可以通过类中的构造函数 __construct 、析构函数 __destruct、克隆__clone来实现,我们可以将这3个函数私有化,不让外部这样实例化对象;然后设置一个公共静态方法,通过类名调用。这是“三私一公”。
<?php
//先创建一个类,后面调用
class A {
}
//创建单例类
class One{
//设置一个私有静态的属性,用于保存对象
private static $obj;
//将构造方法私有化
private function __construct(){
}
//创建一个公共的静态方法,静态方法是为了直接通过类名调用
static function getObj($className){
/**
* instanceof 看一个对象是否属于这个类
*如果实例化的对象属于这个类
*/
if(self::$obj instanceof $className){
//就把这个对象返回
return self::$obj;
}else{
//如果否,就实例化这个对象再返回
self::$obj = new $className;
return self::$obj;
}
}
//将克隆私有化
private function __clone(){
}
}
//测试
//无论实例化多少次类A,都只会得到一个对象
$one1 = One::getObj('A');
$one2 = One::getObj('A');
$one3 = One::getObj('A');
var_dump($one1);
var_dump($one2);
var_dump($one3);
Run code
Cut to clipboard
(支付宝)给作者钱财以资鼓励 (微信)→
暂无评论 »