Я использую 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"}
}
В первом примере вам нужен файл, но вы указываете путь к его родителю. Во втором вы снова хотите файл, но на этот раз укажите полный путь. Неудивительно, что первое терпит неудачу, а второе — успешно.
Казалось бы, что
$date = new \IPS\DateTime\DateTime;
это то, что вы хотели спросить.
Других решений пока нет …