Проблемы с использованием PackageLoader для загрузки класса гаечного ключа - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь загрузить библиотеку Wrench, используя PackageLoader , и не могу заставить ее работать. Мой код ниже.

include __DIR__.'/PackageLoader.php';
$loader = new PackageLoader\PackageLoader();
$loader->load(__DIR__."/vendor/wrench/wrench");

$app = new class implements \Wrench\Application\DataHandlerInterface
{
    public function onData(string $data, \Wrench\Connection $connection): void
    {
        $connection->send($data);
    }
};

Я получаю эту ошибку

Неустранимая ошибка: интерфейс 'Wrench \ Application \ DataHandlerInterface' не найден в C: \ Users \ desbest \ Documents \ UniServerZ \ www \ sugarchat \ includes \ actions.php в строке 13

Он находит файл composer.json, хотя при загрузке библиотеки.

Как мне это исправить?

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

Вы не можете использовать пространство имен, которое не зарегистрировано. Composer сделает это за вас, и поэтому я бы рекомендовал использовать composer.

Если вы не используете Composer, вам нужно использовать функцию spl_autoload_register .

spl_autoload_register([
     'Wrench\\Application\\DataHandlerInterface' => 'PATH/TO/FILE.php'
]);
0 голосов
/ 07 мая 2019

Создав структуру, показанную на скриншоте, ваш код выполняется без ошибок

enter image description here

ваш скрипт находится в файле wrench.php на скриншотеи я только что назвал его на cli

php wrench.php

Пока нет никакого полезного кода, но кажется, что все загружается нормально, по крайней мере.

Как вы можете видеть, я клонировал гаечный ключ внутри структурыиз composer-file-loader и создал структуру, подобную используемой в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...