在PHP中调用成员函数

时间:2010-10-02 19:28:04

标签: php

尝试从另一个类中的Singleton类调用方法时,我收到以下错误消息。

  

在非对象上调用成员函数query()。

3 个答案:

答案 0 :(得分:2)

$db应该成为$this->db

 public function __construct() {
    $this->db = Database::getInstance('localhost', 'database', 'root', '123456');
}

答案 1 :(得分:0)

只需将构造函数中的$db更改为$this->db即可。在PHP中,通过显式引用$this对象来访问成员属性。

此外,您在Database类中犯了同样的错误。另外,指定方法connect()作为静态没有多大意义。另外,如果你问我,private限定符比public更合适。最后,如果您无意在其他地方处理异常,请使用die()代替echo

public function connect($server, $database, $user, $pass) {
    try {
        $this->pdo = new PDO("mysql:host=$server;dbname=$database", $user, $pass);
        $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    } catch(PDOException $e) {
        echo "Error!";
    }  
}

方法query()中也使用$this->pdo而非$pdo

答案 2 :(得分:0)

除了在您的Users构造函数中将$ db分配给$ this-> db之外,您还需要在数据库中分配和引用$ pdo作为$ this-> pdo。