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 オブジェクトが構成メソッドで設定されているため、読み取りメソッドに渡されていないためです。読み取りメソッドが $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 に答える