在PHP中将属性从一种方法传递到另一种方法

时间:2013-03-17 20:25:13

标签: php class methods

我正在尝试上课和PHP:PDO。我已经设置了一个简单的类来尝试一些东西,但是我收到错误“Undefined variable: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方法,因为它是在construct方法中设置的。 让read方法能够使用$ conn属性的最佳(正确)方法是什么?

1 个答案:

答案 0 :(得分: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