繁体   English   中英

无法访问空属性php类

[英]Cannot access empty property php class

我正在尝试学习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致命错误:无法访问空属性

这两行都引用return $ this-> $ stmt; 在mysql_execute_query内部

我的直觉是,它与私有功能有关。 但是我不能说。

有任何想法吗?

这里的错误:

return $this->$stmt;

但应为:

return $this->stmt;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM