【问题标题】:Php class Controller not found找不到 PHP 类控制器
【发布时间】:2018-12-15 17:33:00
【问题描述】:

我有主 index.php 文件,我可以在其中调用其他控制器,这很好。

我用 call_user_func_array( [ $obj, $method[ 0 ] ], $params );

调用它们

例如,我首先包含控制器,然后调用它。我的控制器称为 HomeController,这是我如何包含并调用它的示例。

require( 'system/mvc/controller/'. $controller .'.php' );
$obj = new $controller;
call_user_func_array( [ $obj, $method[ 0 ] ], $params );

没关系,它的工作原理。

所以我的 system/mvc/controller/HomeController.php 看起来像这样:

<?php

class HomeController
{

    public function test()
    {
        echo 'Something!';
    }

   }

    ?>

这没关系。现在我试图包含将扩展我的 HomeController 的主 controller.php 文件。所以在我的 index.php 文件中,我包含了 system/lib/php/Controller.php 并且代码现在在 index.php 中看起来像这样

require( 'system/mvc/controller/'. $controller .'.php' );
require( 'system/lib/php/controller.php' );
$obj = new $controller;
call_user_func_array( [ $obj, $method[ 0 ] ], $params );

在 HomeController 中,我使用了 class HomeController extends Controller,我得到了这个错误: 致命错误:在第 3 行的 /var/www/html/system/mvc/controller/HomeController.php 中找不到类“控制器”

尝试使用命名空间,但没有成功。

【问题讨论】:

  • 尝试在 HomeController 类中包含你的 Controller 类
  • 谢谢!这是有效的!但是还有其他方法可以让我不必在每个控制器中都包含主控制器吗?
  • 在 index.php 文件中包含你的控制器
  • 我建议您了解 composer 及其自动加载功能,因此您无需手动要求文件。在过去 6 年中,作曲家已成为行业标准:getcomposer.org/doc/01-basic-usage.md#autoloading

标签: php


【解决方案1】:

尝试改变

require('system/mvc/controller/'.$controller.'.php');要求( 'system/lib/php/controller.php');

require('system/lib/php/controller.php');要求( '系统/MVC/控制器/'。 $controller .'.php');

【讨论】:

  • 谢谢!现在我明白我的错误在哪里了。首先调用 homecontroller,然后调用主控制器,所以 homecontroller 没有识别我的主控制器。
  • 是的,你明白了:)
  • 是的 :) 就是这样
猜你喜欢
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
  • 2017-09-26
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 2015-05-18
  • 2019-07-04
相关资源
最近更新 更多