Исключение Web-push-php, выбрасывающий класс, не найдено

#php #push-notification #composer-php #autoload #web-push

#php #push-уведомление #композитор-php #автозагрузка #web-push

Вопрос:

Итак, я пытаюсь настроить службу push-уведомлений на PHP, и я использую библиотеку web-push-php из MinishLink. Но по какой-то неизвестной причине (для меня) он выбрасывает меня Class 'MinishlinkWebPushWebPush' not found .

Я не делаю ничего другого (или фантазирую прямо сейчас) и просто выполнил все шаги, упомянутые в этом репозитории README.md .

Внизу есть часто задаваемые вопросы, и эта проблема также указана (я нашел ее через пару часов 🙁 ) и предлагает добавить require __DIR__ . '/path-to-my-vendor/autoload.php'; . Но это не работает.

Пример кода из репозитория (кроме того, это то, с чем я испытываю свою удачу, чтобы просто настроить web-push up!)

 require __DIR__ . '/../vendor/autoload.php';
use MinishlinkWebPushWebPush;
use MinishlinkWebPushSubscription;

// here I'll get the subscription endpoint in the POST parameters
// but in reality, you'll get this information in your database
// because you already stored it (cf. push_subscription.php)

$auth = array(
    'VAPID' => array(
        'subject' => 'https://github.com/Minishlink/web-push-php-example/',
        'publicKey' => file_get_contents(__DIR__ . '/../keys/public_key.txt'), // don't forget that your public key also lives in app.js
        'privateKey' => file_get_contents(__DIR__ . '/../keys/private_key.txt'), // in the real world, this would be in a secret file
    ),
);

$webPush = new WebPush($auth);
$subscription = Subscription::create(json_decode(file_get_contents('php://input'), true));

$report = $webPush->sendOneNotification(
    $subscription,
    "Hello! 👋"
);

// handle eventual errors here, and remove the subscription from your server if it is expired
$endpoint = $report->getRequest()->getUri()->__toString();

if ($report->isSuccess()) {
    echo "[v] Message sent successfully for subscription {$endpoint}.";
} else {
    echo "[x] Message failed to sent for subscription {$endpoint}: {$report->getReason()}";
}
  

Комментарии:

1. Вы установили его с помощью composer?

2. Hii @Wimanicesir Да, я установил его с помощью composer require minishlink/web-push

3. Hii @IncredibleHat Да, я думаю, что путь для автозагрузки правильный, потому что, если я укажу неправильный путь, он выдаст исключение, в котором не найден файл / каталог (поскольку его требуется)

4. Верно, я понял это после запроса lol. Вы пробовали не использовать use MinishlinkWebPushWebPush; вверху (прокомментируйте эту строку) и вместо этого попробуйте $webPush = new MinishlinkWebPushWebPush($auth); напрямую?

5. @IncredibleHat удаление use MinishLink/WebPush / WebPush, а затем использование встроенного метода ничем не отличалось… и я получил точно такую же ошибку