我正在尝试上课和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属性的最佳(正确)方法是什么?
答案 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