【发布时间】:2012-10-14 15:25:28
【问题描述】:
我有两个类,都在不同的命名空间中。当我尝试从一个命名空间创建对象时,我得到了错误
Fatal error: Class 'Classes\DrDatabase' not found in C:\Path\to\workspace\AplicationName\app\models\Users.model.php on line XY
php 命名空间有什么我不明白的地方吗?
两个文件:
FILE 1
namespace Classes;
class DrDatabase extends MssqlDatabase {
public function __construct() {
parent::createLog(__CLASS__);
parent::connect('ipaddress', 'database', 'user', 'password');
if ($this->link) {
$this->log->info('Connected');
}
}
}
FILE 2
namespace Model;
use \Classes\DrDatabase;
class UsersModel implements MasterModel {
private function get($id, $onlyEnabled) {
$db = new DrDatabase();
$getOnlyEnabled = 1;
if (!$onlyEnabled)
$getOnlyEnabled = 0;
$SQL = "SELECT * FROM table";
$resultSet = $db->query($SQL);
$result = array();
while ($row = mssql_fetch_assoc($resultSet)) {
$result[] = self::createUserObject($row['col1'],$row['col2']);
}
}
}
【问题讨论】:
-
试试前面加一个“\”,像这样:
$db = new \DrDatabase(); -
您只能实例化已定义的类。在您的情况下,
\Classes\DrDatabase的定义尚未加载。加载它,你很好。这正是错误消息告诉你的内容,它没有撒谎。 -
\Classes 是一个糟糕的命名空间名称。它不会告诉你它所包含的任何内容。
-
是的,我知道,这只是一个工作名称,但只有一个名称空间必须重命名。我对“模型”也不满意,所以我会将它们重命名为更有意义的东西
标签: php namespaces