加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

(PHP)Singleton数据库类 – 静态方法怎么样?

发布时间:2020-12-13 21:44:49 所属栏目:PHP教程 来源:网络整理
导读:这是一个基本的网站.根据这里的答案,我这样做: private $db;public function __construct($id = null) { $this-db = Db::getInstance(); //singleton from the Db class 但是如果有静态方法,我就不能使用特定于对象的变量. 有什么比在静态方法中手动指定db
这是一个基本的网站.根据这里的答案,我这样做:

private $db;

public function __construct($id = null) {
    $this->db = Db::getInstance(); //singleton from the Db class

但是如果有静态方法,我就不能使用特定于对象的变量.

有什么比在静态方法中手动指定db变量更好的了吗?

public static function someFunction($theID){
    $db = Db::getInstance();

编辑:使变量静态不能解决问题.访问未声明的静态属性.我仍然需要在静态函数中分配变量.问题是询问是否有解决方法.

我的数据库类(虽然对此讨论不重要):

class Db {
private static $m_pInstance;
private function __construct() { ... }

public static function getInstance(){
    if (!self::$m_pInstance)
        self::$m_pInstance = new Db();
    return self::$m_pInstance;
}

}

解决方法

是的,你可以使$db静态:

static private $db;

我假设这是你需要的,因为你是从静态方法访问它.如果有任何理由你不想要这个,那必然意味着该方法可能不应该是静态的.

编辑:

根据@zerkms(谢谢)注释,您可以使用self :::访问静态变量

self::$db = Db::getInstance();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读