Композитор не автозагрузка классов в каталоге с тем же именем - PullRequest
0 голосов
/ 01 января 2019

Я использую 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 голосов
/ 01 января 2019

В первом примере вам нужен файл, но вы указываете путь к его родителю.Во втором вы снова хотите файл, но на этот раз укажите полный путь.Неудивительно, что первое терпит неудачу, а второе - успешно.

Может показаться, что

$date = new \IPS\DateTime\DateTime;

- это то, что вы хотели запросить.

...