Php 作曲家没有';自动加载软件包

Php 作曲家没有';自动加载软件包,php,frameworks,composer-php,autoload,Php,Frameworks,Composer Php,Autoload,我目前正在开发一个框架,但我不知道如何设置自动加载。首先,我用sample类和composer.json创建了一个包。我通过以下方式自动加载了该示例类: "autoload": { "classmap": [ "libs/" ] } 我已经检查了/vendor/mypackage/vendor/composer/autoload_classmap.php,并确认包的自动加载器工作正常。但问题是我无法从主应用程序访问该包的类,除非我直接包含该包的autoload.ph

我目前正在开发一个框架,但我不知道如何设置自动加载。首先,我用sample类和composer.json创建了一个包。我通过以下方式自动加载了该示例类:

"autoload": {
    "classmap": [
      "libs/"
    ]
}
我已经检查了/vendor/mypackage/vendor/composer/autoload_classmap.php,并确认包的自动加载器工作正常。但问题是我无法从主应用程序访问该包的类,除非我直接包含该包的autoload.php

更新

/vendor/foo/mypackage/composer.json

"autoload": {
  "psr-4": {
     "Http\\": "libs/"
   }
}
/vendor/foo/mypackage/libs/Request.php

namespace Http;
class Request {}

首先,通常最好使用
psr-0
psr-4
自动加载配置。使用类映射,每次添加新类或重命名一个类时,都必须重复自动加载程序


您始终需要使用
require'vendor/autoload.php'包含Composer autoloader。添加这样的require语句的最佳位置是在前端控制器文件中。

我自己解决了这个问题。每当我更改pacakge的composer.json时,我都必须重新安装这个包。

我在mvc框架中使用了psr-4,但它对我的composer包不起作用。我还包括/vendor/autoload.php,但如果不包括/vendor/MyPackage/vendor/autoload.php,我就不能使用MyPackage\SampleClass。是不是/vendor/autoload.php也不应该包括包的自动加载器?我必须一个接一个地包含所有包自动加载器吗?为什么在
mypackage
目录中有
vendor
目录?如果您需要带Composer的软件包,所有依赖项都将安装在root
vendor/
目录中,所有自动加载都将设置在root
vendor/autoload.php
中。有一个vendor文件夹,因为我以前在/vendor/mypackage中运行dump autoload命令,但后来我知道这不是必需的。我已经更新了我的问题。我这样调用我的类:
new\Http\Request()
。我没有发现我的代码有任何错误。如果你在2019年来到这里,你所需要做的就是
composer dumpautoload