Композитор автозагрузки PSR-0 не находит класс

1

Это моя структура проекта

api
 |
 PicoApi
    |
     managers
             |
              ApiManager.php
     composer.json     
 index.php

Так выглядит мой композитор:

{
    "autoload": {
        "psr-0": {
            "PicoApi\\": "",
            "PicoApi\\Managers\\" : "managers"
        }
    }
}

Это мой index.php:

//require Pico Api autoload
require 'vendor/autoload.php';

use PicoApi\Managers\ApiManager;

try {
    //initialize the API
    ApiInitializer::initialize();

    //initialize a new Api with the request
    $api = new ApiManager($_REQUEST['request']);
    echo utf8_encode($api->processApi());

} catch (Exception $e) {
    echo json_encode(Array(Error::jsonErrorField() => $e->getMessage()));
}

в моем ApiManager.php я включил: namespace PicoApi\Managers;

И все же я получаю сообщение об ошибке ApiManager.php.

При смене композитора на psr-4 он работает, но я хочу, чтобы он был psr-0.

Что я делаю не так?

  • 0
    Возможно, файл должен называться ApiManager.php , а не ApiManagers.php (в соответствии с тем, что вы вставили как структуру проекта)?
  • 0
    Мой плохой, его ApiManager .. Я редактировал вопрос .. это была опечатка
Теги:
composer-php

1 ответ

0
Лучший ответ

Вы используете обозначение PSR-4, поэтому вам нужно использовать PSR-4. PSR-0 не позволяет пропустить путь между любыми частями имени класса. Если вы хотите использовать его, вам нужно переместить src/managers/ApiManager.php в src/PicoApi/Managers/ApiManager.php тогда

"psr-0": {
    "PicoApi\\": "src"
}
  • 0
    Хорошо, я изменил свою структуру и обновил вопрос, не могли бы вы взглянуть? его до сих пор не работает
  • 0
    сейчас ApiManager.php находится в api/PicoApi/managers/ но он должен быть в api/src/PicoApi/Managers/
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню