Route.php can't find controller class I created

php, silex

Solution

You are missing autoloder options in `composer.json`:

"autoload": { "psr-0": { "App": "./" } }

Problem

I'm trying to build a silex application. My file structure is: ``` ROOT/ /App/ /Controller/{IndexController.php} /Config/{dev.php,prod.php,route.php} /vendor /web/{index.php, index_dev.php} ``` When I'm trying to see `http://localhost/web/` I get error: PHP Fatal error: Class 'App\Controller\IndexController' not found in ../App/config/route.php on line 2 Here are the relevant files: index_dev.php ``` <?php require_once __DIR__.'/../vendor/autoload.php'; require __DIR__.'/../App/config/dev.php'; $app = require __DIR__.'/../App/app.php'; $app->run(); ?> ``` app.php ``` <?php use Silex\Application; use Silex\Provider\TwigServiceProvider; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; $app = new Application(); require __DIR__.'/config/route.php'; return $app; ?> ``` route.php ``` <?php $app->mount('/', new App\Controller\IndexController()); ?> ``` IndexController.php ``` <?php namespace App\Controller; use Silex\Application; use Silex\ControllerProviderInterface; use Silex\ControllerCollection; class IndexController implements ControllerProviderInterface { public function index(Application $app) { return phpinfo(); } public function connect(Application $app) { $controllers = $app['controllers_factory']; $app->get('/', 'App\Controller\IndexController::index'); return $controllers; } } ?> ``` composer.json ``` { "require": { "silex/silex": "1.0.*" }, "minimum-stability": "dev" } ```

Original source