Silex Class 不存在 - 控制器

Silex Class does not exist - Controller

我从 Silex 开始,但我无法 link 我的控制器。我查看了几个示例和帖子,但我阻止了,没有任何效果。

目前我有这个:

在我的index.php

<?php
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
require_once __DIR__.'/../vendor/autoload.php';


$app = new Silex\Application();
$app['debug'] = true;
$app->register(new Silex\Provider\ServiceControllerServiceProvider());
Request::enableHttpMethodParameterOverride();
$app->get("/", "Silex\Controllers\MainController::index");
$app->run();

在我的composer.json

{
"require": {
    "silex/silex": "~2.0",
    "ddesrosiers/silex-annotation-provider": "dev-master"
},
"autoload": {
    "psr-4": {
        "Silex\": "silex/"
    }
}
}

我的控制器:

    <?php

namespace Silex\Controllers;

use Silex\Application;

class MainController implements \Silex\ControllerProviderInterface { 

    public function index()
    {
        return new Response('Thank you for your feedback!', 201);
    }
}

我不知道它是否重要,但我项目的 url 是 "silex/"。

你能告诉我这段代码有什么问题吗? 谢谢 !

根据您的文件结构,您的 Silex 命名空间路径应为“”

"autoload": {
    "psr-4": {
        "Silex\": ""
    }
}

最好不要使用这个命名空间,因为它被composer安装的silex框架使用。您可以将其重命名为其他名称,例如 App.

"autoload": {
    "psr-4": {
        "App\": ""
    }
}

...

<?php
namespace App\Controllers;

use Silex\Application;

class MainController implements \Silex\ControllerProviderInterface { 

...

$app->get("/", "App\Controllers\MainController::index");

您正在使用 silex 2。一些命名空间已更改。

您应该使用 Silex\Api\ControllerProviderInterface

而不是 \Silex\ControllerProviderInterface