在传统框架之外从未使用过路由器我已经陷入了PHRoute和路由到控制器的困境。我的代码如下,我有一个index.php,其中包含配置文件和bootstrap / app.php,其内容如下:
require_once('../application/controllers/home.php');
$router = $app['router'];
$router->any('/home', ['Home','Application/Controllers/Home']);
function processInput($uri){
$uri = implode('/',
array_slice(
explode('/', $_SERVER['REQUEST_URI']), 1));
return $uri;
}
use Phroute\Phroute\Dispatcher;
$dispatcher = new Dispatcher($router->getData());
$response = $dispatcher->dispatch($_SERVER['REQUEST_METHOD'], processInput($_SERVER['REQUEST_URI']));
echo $response;
问题是当我点击/ home route
时找不到我的家庭控制器Uncaught Error: Class 'Home' not found in /application/vendor/phroute/phroute/src/Phroute/HandlerResolver.php:16
在上面的代码中,我做了一个简单的要求,所以我知道这个类被异常加载到脚本中。该课程如下所示:
<?php
namespace Application\Controllers;
class Home
{
public function __construct(){
echo 'home construct';
}
public function index(){
echo 'index';
}
}
我错过了什么吗?
答案 0 :(得分:0)
问题是您的路线定义。 phroute文档说:
//使用字符串为类名
延迟加载自动加载的路由处理类//使用{id}参数作为参数调用Controllers \ User :: displayUser($ id)方法
$ router-&gt; any(&#39; / users / {id}&#39;,[&#39;控制器\用户&#39;,&#39; displayUser&#39;]);
您的路由定义应该是类名(包括命名空间),后跟要调用的方法:
$router->any('/home', ['Application\Controllers\Home', 'index']);