2015-05-31 2 views
1

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

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' (в зависимости от того, что вы вставили в структуре проекта)? – VolenD

+0

Мой плохой, его ApiManager .. Я редактировал вопрос .. это была опечатка –

ответ

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 /' – Federkun

+0

Почему требуется src? и где должен быть композитор? в PicoApi или на одном уровне вверх? –