I want access of a function in my controller "ItemController". I always have the error; Fatal error: Class 'Iso\Controller\ItemController' not found ...
testsilex / Silex
- app
- composer.json
- src
- routes.php
- Iso
- Controller
- ItemController.php
- vendor
- web
- index.php
I have an index.php file in Silex/Web
ini_set('display_errors', 1);
require_once __DIR__.'/../vendor/autoload.php';
$app = require __DIR__.'/../app/app.php';
require __DIR__.'/../src/routes.php';
$app['debug'] = true;
$app->run();
My itemcontroller looks like:
<?php
namespace Iso\Controller;
use Silex\Application;
class ItemController
{
public function indexAction(Request $request, Application $app)
{
echo "it works";
}
}
My routes.php looks like:
$app->mount('/testsilex/silex/test', new Iso\Controller\ItemController());
My composer.json i added next line:
"autoload": {
"psr-0": {"Iso": "src/"}
}
Does anyone know why my class is not found? It will be a small mistake but i can't find it. Thanks :)
I would say you need either an absolute identifer for your controller class. That is a leading backslash:
$app->mount('/testsilex/silex/test', new \Iso\Controller\ItemController());
Or you import the namespace with a use
statement, which will always use full qualified names.
...
use Iso\Controller;
...
$app->mount('/testsilex/silex/test', new ItemController());
...
In the composer config, namespaces are always specified with a trailing \\
.
"autoload": {
"psr-0": {"Iso\\": "src/"}
}
Check out the examples in the documentation.