PHP索引未连接到模型类
我试图用我写的一个简单的例子来测试它,但浏览器总是说: 致命错误:未捕获错误:在C:\xampp\htdocs\mvcFirst\index.php中找不到类“Model”。第9行的C:\xampp\htdocs\mvcFirst\index.php中抛出了9堆栈跟踪:#0{main} 我在网上搜索过,但没有找到原因。 这是我的密码:PHP索引未连接到模型类,php,Php,我试图用我写的一个简单的例子来测试它,但浏览器总是说: 致命错误:未捕获错误:在C:\xampp\htdocs\mvcFirst\index.php中找不到类“Model”。第9行的C:\xampp\htdocs\mvcFirst\index.php中抛出了9堆栈跟踪:#0{main} 我在网上搜索过,但没有找到原因。 这是我的密码: 模型类: <?php class Model { public $string; public function __construct(
<?php
class Model
{
public $string;
public function __construct()
{
$this->string="MVC and PHP are awesome!";
}
}
如有任何建议,我将不胜感激。在PHP中,您需要包含希望使用的外部文件。一种方法是使用函数
include\u once
并指定要包含在代码中的每个文件
假设您的文件名为model.php
、controller.php
和view.php
,则需要将其放在index.php
文件中打开的php标记之后:
include_once './model.php';
include_once './controller.php';
include_once './view.php';
另一种方法是应用自动加载。当PHP遇到尚未看到的类和尚未加载的类时,会自动加载。自动加载是使用函数完成的。官方文档包含一个非常简单的说明代码,说明其工作原理:
<?php
spl_autoload_register(function ($class_name) {
include $class_name . '.php';
});
了解自动加载这是一种定制的MVC结构吗?在PHP中,您需要包含所需的文件。你好像没这么做。一种常见的(现代)模式是使用自动加载。这是一个在PHP遇到它找不到的类时运行的函数。它将尝试使用名称空间和类的名称加载该类。这会“神奇地”自动为你添加内容。你能显示你的文件夹结构吗?@HimanshuUpadhyay不,它是正常的结构,我只是想测试一下,因为我是MVC的新想法。它很有效!就像魔幻lol realy thx人一样。我以前不知道我必须包含它们,我想我不需要它,因为有些类不是php文件。@SamBoHamdan你应该认真阅读自动加载,因为它使整个过程更容易处理。否则,您将在一天结束时包括文件。这也会在您移动文件等时中断。自动加载更易于管理。完成后,请投票:)
<?php
try {
$model = new Model();
$controller = new Controller($model);
$view = new View($controller, $model);
echo $view->output();
}catch (Exception $e){
echo $e->getMessage();
}
?>
include_once './model.php';
include_once './controller.php';
include_once './view.php';
<?php
spl_autoload_register(function ($class_name) {
include $class_name . '.php';
});