PHRoute无法路由到控制器'未找到类'

时间:2017-07-10 08:21:06

标签: php

在传统框架之外从未使用过路由器我已经陷入了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';
    }

}

我错过了什么吗?

1 个答案:

答案 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']);