PHP-php单例模式使用

发布于 2016-12-23 06:55:38 字数 141 浏览 1165 评论 2

请问各位高手,单例模式是不是每次执行完都要调用unset呢?我打算使用单例模式来构建我的lib类,如果我不每次运行后都unset,那么执行第二次就会有上一次的数据了,我见别人的例子也没有提及,不知有没有必要。还有单例模式是不适合构建lib 的类呢,请高手指点指点,谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灵芸 2017-06-07 19:15:53

这是我写的一个继承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;
}
}

虐人心 2017-02-04 23:03:53

<?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还都没有采用单例。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文