简体   繁体   English

作曲家自动加载PSR-0找不到类

[英]Composer autoload psr-0 doesn't find class

This is my project structure 这是我的项目结构

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

This is how my composer looks like: 这是我的作曲家的样子:

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

This is my index.php: 这是我的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()));
}

in my ApiManager.php I included: namespace PicoApi\\Managers; 在我的ApiManager.php中,我包括: namespace PicoApi\\Managers;

And yet i get an error that it doesn't find ApiManager.php. 但是我收到一个错误,找不到ApiManager.php。

When changing the composer to psr-4 it does work, but I want it to be psr-0. 将作曲家更改为psr-4时,它确实可以工作,但我希望它为psr-0。

What am I doing wrong ? 我究竟做错了什么 ?

You are using the notation PSR-4 , so you need to use PSR-4. 您正在使用符号PSR-4 ,因此您需要使用PSR-4。 PSR-0 does not allow for an intercessory path between any portions of the class name. PSR-0不允许在类名称的任何部分之间使用代调路径。 If you want use it you need move src/managers/ApiManager.php in src/PicoApi/Managers/ApiManager.php then 如果要使用它,则需要将src/managers/ApiManager.php移动到src/PicoApi/Managers/ApiManager.php然后

"psr-0": {
    "PicoApi\\": "src"
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM