Класс PHP использует другие классы из композитора

Я сделал класс, который автоматически загружается с помощью psr-4. В этом классе я хотел использовать классы из некоторых библиотек, которые я загрузил с помощью composer, проблема в том, что я не могу понять это. Класс:

<?php
namespace CusTelegram\CusCommand; 
use Telegram\Bot\Actions;
use Telegram\Bot\Commands\Command;
class NewEpisodeCommand extends Command
{
    public function handle($arguments)
    { 
        ...
        $dotenv = new Dotenv\Dotenv(__DIR__ . "/../..");
        $this->replyWithMessage(['text' => __DIR__ . "/../.."]);
        $dotenv->overload();
        $client = new ApiVideo\Client\Client($_ENV["API_EMAIL"], $_ENV["API_KEY"]);
        ...
}

Дескриптор метода вызывается из веб-перехватчика телеграммы, поэтому я не знаю, как его удалить, но я на 100% уверен, что он вылетает, когда Dotenv пытается создать экземпляр. В виде дерева:

/CusTelegram
  /CusCommand
    /NewEpisodeCommand.php (this class)
/bot
  /bot.php
/vendor
...

В боте php мне уже нужна автозагрузка. У этого класса нет проблем, просто я не могу использовать DotEnv и ApiVideo в классе NewEpisodeCommand. Bot.php:

ini_set('memory_limit', '-1');
require_once '../vendor/autoload.php';

use Telegram\Bot\Api;
$telegram = new Api(<token>);
$commands = [CusTelegram\CusCommand\StartCommand::class, CusTelegram\CusCommand\NewEpisodeCommand::class, Telegram\Bot\Commands\HelpCommand::class ];
$telegram->addCommands($commands);

$update = $telegram->commandsHandler(true);

--РЕДАКТИРОВАТЬ-- Мне удалось распечатать ошибку, и вот что я получаю:

Fatal error: Uncaught Error: Class 'CusTelegram\CusCommand\Dotenv\Dotenv' not found in /membri/streamapi/CusTelegram/CusCommand/NewEpisodeCommand.php

Я не вижу проблемы, потому что он вызывается из api телеграммы, поскольку он находится в веб-перехватчике, и на моем хостинге я не могу получить доступ к папке журнала ошибок

Leonardo Drici 19.11.2018 11:04

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

Zoe Edwards 19.11.2018 11:05

Есть ли способ записать ошибку в папке, в которой я нахожусь? Я перепробовал все методы, но они не работают.

Leonardo Drici 19.11.2018 11:06

Мне удалось распечатать ошибку

Leonardo Drici 19.11.2018 11:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
175
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне удалось исправить ошибку, мне просто нужно было вставить путь использования, например:

use Dotenv\Dotenv;
use ApiVideo\Client\Client;

Если вы не хотите использовать оператор use, вам придется поставить перед FQCN обратную косую черту, например: $dotenv = new \Dotenv\Dotenv(__DIR__ . "/../..");

xabbuh 20.11.2018 12:24

Другие вопросы по теме