2012-10-24 145 views
-2

我有两个类,都在不同的命名空间。当我试图从一个命名空间中创建对象,然后我得到的错误PHP命名空间和类

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']); 
     } 
    } 
} 
+0

用前面的“\”来试试它,如下所示:'$ db = new \ DrDatabase();' – w00

+0

您只能实例化已定义的类。在你的情况下,'\ Classes \ DrDatabase'的定义尚未加载。加载它,你很好。这正是错误信息告诉你的,而不是说谎。 – hakre

+0

\类是名字空间的一个可怕的名字。它没有告诉你任何关于它包含的内容。 – GordonM

回答

3

除非你使用一个正确配置的自动加载,你仍然必须包括“FILE 1”使其正常工作。

否则 - 您的UserModel如何知道在哪里可以找到DrDatabase类?

+0

啊该死的你是对的...... – Gabriel