2012-10-24 146 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