PHP-php单例模式使用
请问各位高手,单例模式是不是每次执行完都要调用unset呢?我打算使用单例模式来构建我的lib类,如果我不每次运行后都unset,那么执行第二次就会有上一次的数据了,我见别人的例子也没有提及,不知有没有必要。还有单例模式是不适合构建lib 的类呢,请高手指点指点,谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是我写的一个继承Smarty的单例模式,你可以看下,就像上面的朋友说的,单例的主要作用是为了防止实例化过多的类,(有时也许还会出现冲突),从而使整个程序运行中只有一个实例的类,
class Tpl extends Smarty {
private static $tpl;
private function Tpl() {
// 重写父类方法
parent::__construct();
$this->_conf_params();
}
// 配置参数
private function _conf_params() {
$this->setTemplateDir(EASY_PATH.'/'.APP_PATH.'template');
$this->setCompileDir(EASY_PATH.'/compile');
$this->setConfigDir(EASY_PATH.'/config');
$this->setCacheDir(EASY_PATH.'/cache');
$this->caching = false;
$this->left_delimiter = '{[';
$this->right_delimiter = ']}';
}
public static function _tpl() {
if (!(self::$tpl instanceof self)) self::$tpl = new self();
return self::$tpl;
}
}
<?php
// 如果需要牵涉到单例的初始化
class foo {
static $instance = null;
public static function get_instance() {
if(self::$instance === null) {
self::$instance = new foo();
}
// 可以在return前 进行初始化
self::$instance->rest();
return self::$instance;
}
public function rest() {
// 这里可以进行使用前的初始化工作
}
}
如果你发现每次产生的实例都要和之前的不同,那么这个就不适合用单例,因为单例的先决条件就是整个运行周期仅一个实例对象。
至于你说的lib,主要看你的设计,要具体分析对待,但是我的大多数的lib还都没有采用单例。