Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我需要显式地实例化一个对象?_Php_Oop - Fatal编程技术网

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

Php 为什么我需要显式地实例化一个对象?,php,oop,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;

我的MVC框架有问题。以下是我在主控制器中的
loadModel()
方法:

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

    if (file_exists($path)) {
        require $path;  
        $modelName = $name . '_Model';
        $this->model = new $modelName;
    }
}
如您所见,当我尝试加载控制器时,它会自动加载一个同名的模型+\u model.php

当我使用wamp或xampp时,我没有任何问题,但是当我将其上传到我的网站时,它在每个模型上都显示了
“未定义属性”
。这意味着模型没有加载。我知道问题就在那里


这是服务器的php.ini文件中的某种错误吗?或者可能是因为不同的PHP版本?

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


基本上,检查您的文件名-如果您试图加载
$name\u Model.php
,但该文件是
$name\u Model.php
,则上载时会失败

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


基本上,检查您的文件名-如果您试图加载
$name\u Model.php
,但该文件是
$name\u Model.php
,则上载时会失败

>P>你可能想使用,它修复了你所有的问题:

你可以考虑使用,它修复了你所有的问题:

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

创建一条绝对路径,如(适应您的需要):

如果您在本地使用类似的东西,那么它也应该在服务器上使用


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

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

创建一条绝对路径,如(适应您的需要):

如果您在本地使用类似的东西,那么它也应该在服务器上使用


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

我想你是对的!!我正在加载它,比如login\u Model,现在我知道它的类是login\u Model!!!谢谢你,现在要测试一下!!!!我认为你是对的!!我正在加载它,比如login\u Model,现在我知道它的类是login\u Model!!!谢谢你,现在要测试一下!!!!可能的重复项您是否在本地服务器上启用了完全错误报告?可能的重复项您是否在本地服务器上启用了完全错误报告?
$path = __DIR__ . '/models/' . $name . '_Model.php';