'Services_Twilio' не найден - Laravel

Насколько я понимаю, я не могу просто использовать use Twilio чтобы это работало. Таким образом, я пытался require_once а также require, Путь также должен быть правильным

Я пытался использовать require_once

    $twilioDir = '../vendor/twilio/sdk/Services/Twilio.php';
    require_once($twilioDir);

    $client = new Services_Twilio($_ENV['TWILIO_ACCOUNT_SID'], $_ENV['TWILIO_AUTH_TOKEN']);

Класс 'App\Http\Controllers\Services_Twilio' не найден

Что я делаю неправильно?


Кроме того, используя require дал мне ошибку:

Невозможно повторно объявить Services_Twilio_autoload() (ранее объявлено в /var/www/Laravel/vendor/twilio/sdk/Services/Twilio.php:9)

Я попытался добавить false в строку spl_autoload_register('Services_Twilio_autoload', false); в Twilio.php, но не повезло


3 ответа

Решение

Насколько я понимаю, я не могу просто использовать use Twilio чтобы это работало.

Правильно, потому что класс назван Services_Twilio,

use Services_Twilio; должен сделать свое дело.

Laravel обрабатывает автозагрузку для вас. Вам не нужно вручную require библиотека, если только Twilio не обманул что-то в их настройке Composer.

Я не знаю, кто сказал тебе, что ты не можешь use Twilio но ты можешь конечно use Twilio,

  1. Возьмите пакет композитора - composer require aloha/twilio
  2. Зарегистрировать ServiceProvider в app.php как и любой другой поставщик: 'Aloha\Twilio\Support\Laravel\ServiceProvider', должны быть добавлены к providers массив.
  3. Зарегистрируйте фасад, чтобы облегчить жизнь app.php добавить к aliases массив: 'Twilio' => 'Aloha\Twilio\Support\Laravel\Facade',
  4. (необязательно) запустить php artisan vendor:publish так что вы можете управлять активами, которые поставщик предоставляет вам.
  5. Потому что мы ранее добавили facade к aliases массив в нашем app.php мы можем правильно use Twilio; в наших классах.
  6. Если вы не сделали 3, то вам нужно сослаться на полный путь к пространству имен; use Aloha\Twilio\Support\Laravel\Facade который даст вам доступ к Twilio:: внутри этого конкретного файла.

редактировать

Я должен отметить, что вы не use Twilio внутри класса вы должны ссылаться на него вне класса и перед классом.

use Twilio; //Aloha\Twilio\Support\Laravel\Facade

class MyController {
    /**
     * Now you can use Twilio::whatever
     */
}

Принятый ответ не работал для меня.

Справочная информация: мой код работал некоторое время с use Services_Twilio;, но потом я перестал использовать Twilio на месяцы (или, может быть, больше года), а затем я получил эту ошибку.

То, что закончило работать, обновляло мой код, чтобы сказать use Twilio\Rest\Client; вместо этого, а затем создать объект клиента с помощью new Client($this->config['account_sid'], $this->config['auth_token']);,

Похоже, это новый способ Twilio.

Эти документы помогли.

Вы должны импортировать его в верхней части файла.

Я не уверен насчет полного пути к файлу, но я предполагаю, что это должно быть что-то вроде:

use Twilio\SDK\Services\Twilio

Обновление: следуйте инструкциям здесь: https://github.com/aloha/laravel-twilio

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