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');
我尝试使用 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');