Silex, класс не найден

Я хочу получить доступ к функции в моем контроллере «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/"}
}

Кто-нибудь знает, почему мой класс не найден? Это будет маленькая ошибка, но я не могу ее найти. Спасибо 🙂

1

Решение

Я бы сказал, что вам нужен абсолютный идентификатор для вашего класса контроллера. Это ведущий обратный слеш:

$app->mount('/testsilex/silex/test', new \Iso\Controller\ItemController());

Или вы импортируете пространство имен с use заявление, которое всегда будет использовать полные имена.

...
use Iso\Controller;
...
$app->mount('/testsilex/silex/test', new ItemController());
...
1

Другие решения

В конфиге композитора пространства имен всегда указываются с завершающим \\,

"autoload": {
"psr-0": {"Iso\\": "src/"}
}

Проверьте примеры в документация.

4

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector