Composer autoload psr-0无法找到课程

时间:2015-05-31 08:37:33

标签: php composer-php

这是我的项目结构

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。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您使用的是注释PSR-4,因此需要才能使用PSR-4。 PSR-0不允许类名的任何部分之间的代理路径。如果您想使用它,则需要在src/managers/ApiManager.php然后

中移动src/PicoApi/Managers/ApiManager.php
"psr-0": {
    "PicoApi\\": "src"
}