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

Я пытаюсь опубликовать новый пакет на Packagist.org, но у меня возникают некоторые проблемы с использованием системы автозагрузчика.

Мой код доступен здесь: https://github.com/Gabyfle/gSteam-Auth Пока яустановка моего пакета (https://packagist.org/packages/gabyfle/gsteam-auth) все в порядке, но когда я загружаю его через PHP:

require __DIR__ . "/vendor/autoload.php";

$testing = new \Gabyfle\SteamAuth('test', 'test');

Я получил ошибку, сообщающую, что пространство имен Gabyfle не может быть найдено.

Fatal error: Uncaught Error: Class 'Gabyfle\SteamAuth' not found in <path>\gSteam-test\testing.php:4 Stack trace: #0 {main} thrown in <path>\gSteam-test\testing.php on line 4

Я уже пробовал все различные соглашения об автозагрузке (PSR0 и PSR4), я также пытался включить мой класс в автозагрузчик через параметр classmap, но мой класс не загружается.

Есть ли у вас какие-либо идеи о том, как я могу сделать так, чтобы мой класс загружался через автозагрузчик композитора?

Спасибо, Габриэль

Ответы [ 2 ]

1 голос
/ 16 апреля 2019

Благодаря @mdexp я обнаружил, что не так с моим классом.Я определял два класса в одном файле, и это не соответствует норме PSR-4.

Я просто удалил один класс из файла, и теперь все работает нормально.

Спасибо!

1 голос
/ 16 апреля 2019

Я бы предложил использовать автозагрузку PSR-4.Имейте в виду, что вы должны ставить конечные обратные слеши в конце объявления пространства имен:

"autoload": {
    "psr-4": {
        "Gabyfle\\": "src/"
    }
},

Цитата из документа композитора:

Обратите внимание, что в отличие от более раннего PSR-0, префикс (Foo \\) отсутствует в пути к файлу.

А также:

Префиксы пространства имен должны заканчиваться на \, чтобы избежать конфликтов междупохожие префиксы.Например, Foo будет сопоставлять классы в пространстве имен FooBar, поэтому обратные слэши решают проблему: Foo \ и FooBar \ различны.

Имейте это в виду, если вы переключитесь с psr-0 на psr-4

...