在index.php
我正在调用Engine::router()
方法(位于app/Engine.php
)以从请求中获取字符串,例如'home'
并将其放入{{ 1}}。然后我想用这个字符串创建新对象。
$controller
然后我尝试从$className = $controler.'Controller';
目录中的类名homeController
创建一个对象。
controllers/homeController.php
但我仍然得到require 'controllers/'.$className.'.php';
$CONTROLLER = new $className();
重要!当我将“{1}}替换为' homeController' (不是字符串)然后正确创建对象。
Fatal error: Class 'homeController' not found in C:\xampp\htdocs\w8\app\Engine.php on line 67
app / Engine.php(类引擎)的完整代码
$className
我正在使用以下命名空间:
根:
$CONTROLLER = new homeController();
目录应用
public static function router()
{
$request = $_SERVER['REQUEST_URI'];
$path = ltrim($_SERVER['REQUEST_URI'], '/');
$requestElements = explode('/', $path);
$requestController = $requestElements[0];
$availableControllers = self::getControllers();
if (self::checkController($requestController, $availableControllers))
{
$className = $requestController.'Controller';
require 'controllers/'.$className.'.php';
$CONTROLLER = new $className();
}
}
目录控制器:
index.php (use app\Engine;)
其他问题:为什么当我在Engine.php中Engine.php (namespace app; use controllers\homeController;)
而不是homeController.php (namespace controllers;)
时,我会得到use controllers;
对于这两种情况,第67行都是use controllers\homeController;
或Fatal error: Class 'app\homeController' not found in C:\xampp\htdocs\w8\app\Engine.php on line 67
。