Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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 - Fatal编程技术网

PHP索引未连接到模型类

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(

我试图用我写的一个简单的例子来测试它,但浏览器总是说:

致命错误:未捕获错误:在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()
        {
            $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';
    });