0

我正在尝试类和 PHP:PDO。我已经设置了一个简单的类来尝试一些东西,但是我收到一个错误“未定义的变量:conn”错误。

class Cms {

    function __construct() {
        try {
            $conn = new PDO('mysql:host=localhost;dbname=blog', 'root', '');
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch(PDOException $error) {
            echo 'error: ' . $error->getMessage();
        }
    }

    public function read() {
        $query = $conn->query("SELECT * FROM posts");
    }
}

据我所知,这可能是因为 $conn PDO 对象没有被传递到 read 方法,因为它是在构造方法中设置的。让 read 方法能够使用 $conn 属性的最佳(正确)方法是什么?

4

1 回答 1

5
class Cms {

    private $_conn;

    function __construct() {
        try {
            $this->_conn = new PDO('mysql:host=localhost;dbname=blog', 'root', '');
            $this->_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch(PDOException $error) {
            echo 'error: ' . $error->getMessage();
        }
    }

    public function read() {
        $query = $this->_conn->query("SELECT * FROM posts");
    }
}

因此,您创建一个私有属性,将您的 PDO 实例分配给它并使用

一些文档:http ://www.php.net/manual/en/language.oop5.properties.php

于 2013-03-17T20:26:49.737 回答