Route.php cannot find the controller class that I created

I am trying to create a silex application. My file structure:

  ROOT /
     / App /
         /Controller/{IndexController.php}
         /Config/{dev.php,prod.php,route.php}
     / vendor
     /web/{index.php, index_dev.php}

When I try to see http://localhost/web/ , I get an error message:

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" } 
+4
source share
1 answer

You are missing autoloder options in composer.json :

 "autoload": { "psr-0": { "App": "./" } } 
+10
source

Source: https://habr.com/ru/post/1443714/


All Articles