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 版本?

4

3 回答 3

2

Windows 不区分大小写,即就Windows 而言,Model.php 和model.php 是相同的。但是,在 unix/linux 上(我假设您的网站服务器是)文件系统区分大小写。

基本上,检查您的文件名 - 如果您尝试加载$name_Model.php但文件$name_model.php在您上传时会失败。

于 2012-07-19T13:08:41.767 回答
1

您可能想考虑使用autoloading来解决您的所有问题:

于 2012-07-19T13:09:01.753 回答
1

不要依赖相对路径,它们依赖于当前目录。

制作一个绝对路径,例如(适应您的需要):

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

如果你让类似的东西在本地工作,它也应该在服务器上工作。

顺便说一句,我不明白为什么 _Model 后缀。models/Car.php 还不够吗?

于 2012-07-19T13:09:31.470 回答