【发布时间】:2012-12-03 11:17:17
【问题描述】:
这是我的代码:
class DB {
static $instance;
function get() {
if (self::$instance === null) {
self::$instance = new PDO('mysql:host=localhost;dbname=forum', 'root', 'root');
}
return self::$instance;
}
function getAllUsers() {
$users = array();
$sql = "SELECT * FROM users";
foreach (self::get()->query($sql) as $row) {
$users[] = new User($row);
}
return $users;
}
}
现在我在这里调用 getAllUsers 函数:
class App {
function showUsers() {
$users = DB::getAllUsers();
}
除了它给我一个错误:
警告:为 foreach() 提供的参数无效
当我在self::get 上做var_dump 时,我得到一个bool(false)
谁能告诉我我做错了什么?
【问题讨论】:
-
我想指出 var_dump(self::get()) 显示 object(PDO)#2 (0) { }
-
你为什么不是
try/catching and raising exceptions?你没有给你的班级任何优雅地失败的路线。 -
如果你使用
self::get()调用你的类实例,那么get()应该被声明为static。 -
我最初的想法是错误被隐藏了,因为我还没有创建数据库。但是我已经用 try/catch 包围了它,但它仍然没有给我 PDOException
-
该类应该是静态的,我很清楚这一点。但是由于某种原因,它仍然可以在没有 static 关键字的情况下工作。我正在取回一个 pdo 对象