无法访问空属性php类

时间:2014-02-09 09:47:03

标签: php oop

我正在努力学习OOP及其一些概念。我跟着用户上课:

    class Users
    {

        private $host   = DB_HOST;
        private $user   = DB_USERNAME;
        private $pass   = DB_PASSWORD;
        private $dbname = DB_NAME;

        private $conn;
        private $stmt;
        public  $error;

        function __construct()
        {
            $dsn = 'mysql:host='.$this->host.';dbname='.$this->dbname.';charset=utf8';
            $options = array(
                PDO::ATTR_PERSISTENT => true,
                PDO::ATTR_ERRMODE    => PDO::ERRMODE_EXCEPTION
            );
            try {
                $this->conn = new PDO($dsn,$this->user,$this->pass,$options);
            } catch (PDOException $e) {
                $this->error = $e->getMessage();
            }
        }

        private function mysql_execute_query($sql,$params)
        {
            $this->stmt = $this->conn->prepare($sql);
            $this->stmt->execute($params);
            return $this->$stmt;
        }

        public function find_user_by_provider_uid($provider,$provider_uid)
        {
            $sql = 'SELECT * FROM users WHERE provider = :provider AND provider_uid = :provider_uid LIMIT 1';
            $params = array(
                ':provider'     => $provider,
                ':provider_uid' => $provider_uid
            );
            $result = $this->mysql_execute_query($sql,$params);
            return $result->fetch();
        }
}

首先,是否有一些提示可以更好地构建此代码?或者使用oop的更多功能?

其次,它失败并出现以下错误:

PHP注意:未定义的变量:stmt PHP致命错误:无法访问空属性

这两行都是指返回$ this-> $ stmt;在mysql_execute_query里面

我的预感是它与私人功能有关。但我不知道。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

这里的错误:

return $this->$stmt;

但应该是:

return $this->stmt;