语法 - 访问类属性方法

时间:2011-09-03 00:53:22

标签: php

我刚刚升级了我的php表单mysql,以面向对象的方式使用mysqli。我有理由相信这段代码中有错误。我的目标是使用单一模式来保证每个脚本执行只有一个数据库连接。 $ 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);
    }
}

1 个答案:

答案 0 :(得分:1)

将其更改为

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);
    }
  }