Php 为什么我需要显式地实例化一个对象?
我的MVC框架有问题。以下是我在主控制器中的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;
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';