Silex 命名空间:class MainController 不存在

Silex namespace : class MainController does not exist

我尝试使用 Silex Framework,但我认为命名空间有问题。

当我实例化 class MainController 时出现以下错误: Class "MainController" 不存在

这里是我的命名空间声明 MainController.php :

    namespace App\Controllers;

    use Silex\Application;

    class MainController implements \Silex\ControllerProviderInterface { 
....

在我的 app.php 中:

$app->mount("/", new \App\Controllers\MainController());

我的 composer.json 中有一个自动加载:

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

我的项目结构是这样的:

|--应用/
|----app.php
|----控制器/
|--------MainController.php
|--网络/
|----index.php

非常感谢您的帮助:)

我认为您的问题是由您命名目录的方式引起的 controllers。根据关于 PSR-4 标准的文档:

5) Alphabetic characters in the fully qualified class name MAY be any combination of lower case and upper case.

6) All class names MUST be referenced in a case-sensitive fashion.

因此,将您的目录重命名为 Controllers 并重新 运行 composer update.

此外,请查看 ServiceControllerProvider 以了解将控制器实例设置为回调的正确方法。传递新实例可能不是最好的(如果不是错误的)做事方式。你应该做这样的事情:

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