我正在使用silex为我正在构建的应用程序构建api,并且我想将控制器抽象为不同的文件。
我在一个非常严格的IT部门为一家大公司工作,他们不会让我安装作曲家。出于这个原因,我需要通过$loader->add()
函数手动注册名称空间,但是我收到以下错误:
Fatal error: Class 'App\Controller\SessionController' not found in C:\path\to\webroot\App\bootstrap.php on line 9
有谁知道为什么自动加载器没有拿起我的App命名空间?
目前,我的应用程序结构如下:
App/
Controller/
ApiControllerAbstract.php
SessionController.php
bootstrap.php
vendor/
www/
index.php
的index.php
require_once "../app/bootstrap.php";
bootstrap.php中
$loader = require_once __DIR__.'/../vendor/autoload.php';
$loader->add('App', __DIR__ . '/../App/');
$app = new Silex\Application();
$app->mount('/session', new App\Controller\SessionController());
$app->run();
SessionController.php
namespace App\Controller;
class SessionController extends ApiControllerAbstract {
public function connect( $app)
{
$this->app = $app;
$controller_collection = $app['controllers_factory'];
// DECLARE ALL YOUR ROUTES HERE
//...
}
}
答案 0 :(得分:2)
您好, 以下一行:
$loader->add('App', __DIR__ . '/../App/');
应该是:
$loader->add('App', __DIR__ . '/../');