在Silex中使用命名空间中的命名空间

时间:2016-01-15 13:11:55

标签: php composer-php silex

我正在尝试Silex框架,我遇到了一个问题.... 我试图将路由处理程序委托给控制器(如SF2)。

但我有500错误告诉我无法找到控制器类... 我试图在类似的问题上寻求帮助,但没有答案适用于我的案例......

这是目录架构:

Application 
|-src   
  |-App   
    |-Controller
      |-IndexController 
|-vendor   
  |-... 
|-web   
  |-index.php
|-composer.json

这是“index.php”:

require_once __dir__.'/../vendor/autoload.php';
use App\Controller;

$app = new Silex\Application();
$app['debug'] = true;
$app->register(new Silex\Provider\ServiceControllerServiceProvider());
$app['index.controller'] = $app->share(function() use ($app) {
    return new IndexController();
});
$app->get('/', 'index.controller:indexAction');
$app->run();

这是“IndexController.php”

namespace App\Controller;

class IndexController
{
    public function __construct() {}
    public function indexAction()
    {
        return "Use of controller class : OK";
    }
}

这是“composer.json”

{
    "require": {
        "silex/silex": "~1.3"
    },
    "autoload": {
        "psr-4": {"App\\": "src/App/"}
    }
}

(当然,我做了一个“作曲家更新”来管理composer.json文件的更新)

1 个答案:

答案 0 :(得分:0)

您没有在IndexController中定义use,因此php无法找到控制器类 将使用更改为use App\Controller\IndexController;或将新类更改为return new Controller\IndexController();