Composer不会自动加载同名目录中的类

时间:2018-12-31 21:55:42

标签: php composer-php autoload psr-0

我正在使用composer在我的项目中包含一个私有包,其中将包含一些类,这些类将用于与PHPUnit进行测试。大部分软件包都已正确地自动加载,我可以从单元测试中调用这些类,但是任何与该目录中的名称相同的类都将引发“找不到类”错误。

存储库符合psr-0,位于https://github.com/DeschutesDesignGroupLLC/IPS-Source

文件结构示例抛出错误:

--src ----IPS ------DateTime --------DateTime.php

呼叫$date = new \IPS\DateTime;会引发错误。

文件结构示例不引发错误:

--src ----IPS ------Http --------Url.php

呼叫$url = new \IPS\Http\Url;不会引发错误。

私有软件包的Composer.json:

{
  "name": "deschutesdesigngroupllc/ips",
  "description": "Invision power board source files used to test against",
  "homepage": "https://www.invisioncommunity.com",
  "version": "4.3.6",
  "autoload": {
    "psr-0": {
      "IPS\\": "src/"
    }
  },
  "extra": {
    "branch-alias": {
      "dev-master": "4.3.6"
    }
  },
  "require": {
    "phpdocumentor/phpdocumentor": "dev-master"
  }
}

1 个答案:

答案 0 :(得分:1)

在第一个示例中,您需要一个文件,但提供了其父文件的路径。在第二个中,您再次想要一个文件,但是这次提供了完整路径。毫不奇怪,第一个失败,第二个成功。

看来

$date = new \IPS\DateTime\DateTime;

是您想要的。