gpt4 book ai didi

php - (PHP) 单例数据库类 - 静态方法呢?

转载 作者:可可西里 更新时间:2023-11-01 00:16:18 26 4
gpt4 key购买 nike

这是一个基本的网站。根据此处的答案,我正在这样做:

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;

我假设这就是您所需要的,因为您是从 static 方法访问它的。如果出于任何原因您不想要这个,那一定意味着该方法可能不应该是 static

编辑:

根据@zerkms(感谢)的评论,您可以使用 self:: 访问静态变量:

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

关于php - (PHP) 单例数据库类 - 静态方法呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8650602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com