2012-07-19 157 views
0

我在我的MVC框架有問題。這裏是我的loadModel()方法主控制器內:爲什麼我需要顯式實例化一個對象?

public function loadModel($name) { 
$path = 'models/' . $name . '_Model.php'; 

    if (file_exists($path)) { 
     require $path; 
     $modelName = $name . '_Model'; 
     $this->model = new $modelName; 
    } 
} 

正如你所看到的,當我嘗試加載一個控制器,它自動加載與same name + _model.php的典範。

我沒有任何問題,當我使用wamp或xampp時,但是當我將其上傳到我的網站時,它在每個型號上都顯示"Undefined property"。這意味着模型沒有加載。我知道問題在那裏...

是服務器的php.ini文件中的某種錯誤?或者也許是因爲不同的PHP版本?

+0

[Class not found PHP OOP]的可能重複(http://stackoverflow.com/questions/11375225/class-not-found-php-oop) – 2012-07-19 14:14:17

+0

你打開了你的本地服務器的完整錯誤報告嗎? – 2012-07-19 14:18:59

回答

2

Windows不區分大小寫,即Model.php和model.php與Windows相同。 ON unix/linux然而(我假設你的網站服務器是)文件系統區分大小寫。

基本上,檢查您的文件名 - 如果您嘗試加載$name_Model.php,但文件是$name_model.php,則在上載時會失敗。

+0

我認爲你是對的!我正在加載它,例如 login_Model,其類是Login_Model 現在我知道了!謝謝,現在就試試吧! – 2012-07-19 13:16:39

1

不要依賴相對路徑,它們依賴於當前目錄。

做出這樣(適應你的需求)的絕對路徑:

$path = __DIR__ . '/models/' . $name . '_Model.php'; 

如果你得到類似的東西在本地工作,它應在服務器上工作了。

順便說一句,我不明白爲什麼_Model後綴。模型/ Car.php不會足夠嗎?

相關問題