【发布时间】: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