php单例模式实现(对象只被创建一次)
在PHP面试中,我曾遭遇一道关于单例模式的试题。所谓单例模式,从字面来看,即确保某个类仅有一个实例。这一设计模式的妙处在于其能有效降低资源消耗,如在数据库连接场景中,我们仅需实例化一次,避免频繁创建新对象所带来的资源浪费。
单例类通常包含三个关键公共元素:
它必须拥有一个构造函数,且这个构造函数必须被声明为私有(private)。这是为了确保类不会被外部代码随意实例化。
单例类拥有一个静态成员变量,用于存储该类的唯一实例。
单例类提供一个公共的静态方法,用于获取这个唯一实例。
在实际应用中,单例模式在PHP中的实现可以如我在狼蚁网站SEO优化实例中所展示的那样。代码如下:
```php
// by .phpddt.
class Mysql {
// 该属性用来保存实例
private static $conn;
// 构造函数设为私有,防止外部代码创建对象
private function __construct() {
$this->conn = mysql_connect('localhost','root','');
}
// 创建一个用来实例化对象的方法
public static function getInstance() {
if(!(self::$conn instanceof self)){
self::$conn = new self;
}
return self::$conn;
}
// 防止对象被复制
public function __clone() {
trigger_error('Clone is not allowed !');
}
}
// 通过这种方式获取实例,而不是通过new或clone
$mysql = Mysql::getInstance();
?>
```
在这段代码中,我们通过将构造函数设为私有并创建一个静态方法来确保类只有一个实例。通过这种方式,我们可以确保数据库连接只被创建一次,并在整个应用程序的生命周期中重复使用。这不仅提高了性能,还降低了资源消耗。单例模式在需要频繁进行数据库操作的应用中特别有用。
编程语言
- php单例模式实现(对象只被创建一次)
- 一个不错的正则
- Ajax长连接项目案例
- Ajax方式实现定期更新页面某块内容的方法
- jquery实现全选功能效果的实现代码
- PHP ADODB实现事务处理功能示例
- 正则在FireFox和IE下使用test的不同
- datagrid不可编辑行有关问题的控制方法
- php模板原理讲解
- asp 取一个数的整数 但不是四舍五入,只要有小数
- SQL 合并多行记录的相同字段值
- vue-scroller记录滚动位置的示例代码
- js实现下拉框选择要显示图片的方法
- windows下zendframework项目环境搭建(通过命令行配置
- Jquery使用val方法读写value值
- HeidiSQL工具导出导入MySQL数据