为什么我需要显式实例化一个对象?

时间:2012-07-19 13:04:54

标签: php oop

我的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版本不同?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

您可能需要考虑使用autoloading来修复所有问题:

答案 2 :(得分:1)

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

制定绝对路径(适应您的需求):

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

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

顺便说一句,我不明白为什么_Model后缀。不是型号/ Car.php就够了吗?