2012-07-19 107 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不会足够吗?

相关问题