语法-访问类的属性'方法


Syntax - accessing a class's property's method

我刚刚升级了我的php形式mysql在面向对象的方法中使用mysqli。我有理由相信这段代码有bug。我的目标是使用单例模式来保证每次脚本执行只有一个数据库连接。$db保存数据库链接

有人能验证

这行吗?
return $one->$db->query($query);

语法看起来不正确。

class one
{
    private static $single = NULL;
    public $db = NULL;
    public function __construct()
    {
        $this->db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_DATABASE);
        self::$single=1;
    }
    public static function make_one()
    {
        if(self::$single==NULL)
        {
            return new self();
        }
    }
}

/*database*/
class database
{
    public function __construct()
    {
        one::make_one();
    }
    public static function arche_query($query)
    {
        return $one->$db->query($query);
    }
}

改为

return one::make_one->db->query($query);

你的单例模式不正确单例模式应该只创建一个实例,在你的例子中不是这样的

class one
  {
  private static $_selfInstace;
  public $db;// default is null so no need to assign
  public function __construct()
    {
    $this->db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_DATABASE);
    }
    public static function getInstance() 
    {
        if( !(self::$_selfInstace instanceof self) ) {
            self::$_selfInstace= new self();
        }
        return self::$_selfInstace;
    } 
  }
class database
  {
  public function __construct()
    {
    }
  public static function arche_query($query)
    {
    return one::getInstance()->db->query($query);
    }
  }