Я хочу получить доступ к функции в моем контроллере «ItemController». У меня всегда есть ошибка;
Неустранимая ошибка: класс ‘Iso \ Controller \ ItemController’ не найден …
testsilex / Silex
- app
- composer.json
- src
- routes.php
- Iso
- Controller
- ItemController.php
- vendor
- web
- index.php
У меня есть файл index.php в 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();
Мой itemcontroller выглядит так:
<?php
namespace Iso\Controller;
use Silex\Application;
class ItemController
{
public function indexAction(Request $request, Application $app)
{
echo "it works";
}
}
Мой route.php выглядит так:
$app->mount('/testsilex/silex/test', new Iso\Controller\ItemController());
Мой composer.json я добавил следующую строку:
"autoload": {
"psr-0": {"Iso": "src/"}
}
Кто-нибудь знает, почему мой класс не найден? Это будет маленькая ошибка, но я не могу ее найти. Спасибо 🙂
Я бы сказал, что вам нужен абсолютный идентификатор для вашего класса контроллера. Это ведущий обратный слеш:
$app->mount('/testsilex/silex/test', new \Iso\Controller\ItemController());
Или вы импортируете пространство имен с use
заявление, которое всегда будет использовать полные имена.
...
use Iso\Controller;
...
$app->mount('/testsilex/silex/test', new ItemController());
...
В конфиге композитора пространства имен всегда указываются с завершающим \\
,
"autoload": {
"psr-0": {"Iso\\": "src/"}
}
Проверьте примеры в документация.