php静态单例模式,PHP单例模式实现

**单例模式设计(三私一公)**

1. 私有的静态的保存对象的属性

2. 私有的构造方法 阻止类外new对象

3. 私有的克隆方法阻止类外克隆对象

4. 唯一创建对象的入口就是通过一个共有的静态方法

**作用**:减少内存消耗,如数据库操作时多次`new`数据库对象会造成数据库的重复连接与销毁消耗大量的内存资源,通过单例模式我们就可以达到只实例化一次数据库对象。

如下创建一个单例的数据库类

```php

Class Mysql{

//私有静态对象属性

private static $obj = NULL;

//私有构造方法防止外部new对象

private function __construct(){}

//私有克隆方法,防止外部通过克隆创建对象

private function __clone(){}

//提供一个唯一的创建对象的方法

public static function getInstance(){

//判断当前对象是否被创建

if(!self::$obj instanceof self){

//如果对象不存在则创建

self::$obj = new self

}

return self::$obj;

}

}

$mysql = Mysql::getInstance();//创建mysql对象

```

instanceof用于判对象是否是某个类的实例

```php

function myload($class){

require ('./'.$class.'.class.php');

}

spl_autoload_register('myload');

class Db extends Mysql {

}

$db = new Mysql();

$db->test();

if ($db instanceof Db){

echo "由Db类创建";

}else{

echo "非Db类创建";

}

//非Db类创建

```

这样做有什么好处?

上面说到可以减少内存消耗。

除此之外你想没有,这是一个数据库操作类,不可能我们每一次进行数据库操作都实例化一次,而每次实例化的对象都是不同的,这样会不会产生未知问题?

> 单例在系统中只存在一个对象实例,因此任何地方使用此对象都是一个对象避免多实例创建使用时产生的逻辑错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值