'Services_Twilio' 未找到 - Laravel

'Services_Twilio' not found - Laravel

据我所知,我不能简单地使用 use Twilio 来让它工作。因此,我尝试了 require_oncerequire。路径也要正确

我尝试使用 require_once

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

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

Class 'App\Http\Controllers\Services_Twilio' not found

我做错了什么?


此外,使用 require 给我错误:

Cannot redeclare Services_Twilio_autoload() (previously declared in /var/www/Laravel/vendor/twilio/sdk/Services/Twilio.php:9)

我尝试在 Twilio.php 中的 spl_autoload_register('Services_Twilio_autoload', false); 行添加 false,但没有成功


您必须在文件顶部导入它。

我不确定文件的完整路径,但我猜它应该是这样的:

use Twilio\SDK\Services\Twilio

更新: 按照此处的指南进行操作: https://github.com/aloha/laravel-twilio

我不知道谁告诉你不能use Twilio但你肯定可以use Twilio

  1. 获取作曲家包 - composer require aloha/twilio
  2. 像任何其他供应商一样在 app.php 中注册 ServiceProvider'Aloha\Twilio\Support\Laravel\ServiceProvider', 应该添加到 providers 数组。
  3. 注册门面让生活更轻松——在app.php添加到aliases数组:'Twilio' => 'Aloha\Twilio\Support\Laravel\Facade',
  4. (可选)运行 php artisan vendor:publish 这样您就可以管理供应商向您公开的资产。
  5. 因为我们之前将 facade 添加到 app.php 中的 aliases 数组中,所以我们可以在 classes 中正确地 use Twilio;
  6. 如果你没有做3,那么你需要引用完整的命名空间路径; use Aloha\Twilio\Support\Laravel\Facade 这将使您可以访问该特定文件中的 Twilio::

编辑

我要注意,你不use Twilio来自class,你必须在class之前引用它class.

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

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

As far as I understand, I cannot simply use use Twilio to make it work.

正确,因为 class 被命名为 Services_Twilio

use Services_Twilio; 应该可以解决问题。

Laravel 为您处理自动加载。您不需要手动 require 库,除非 Twilio 在他们的 Composer 设置中搞砸了一些东西。

对我不起作用。

背景:我的代码在 use Services_Twilio; 上工作了一段时间,但后来我停止使用 Twilio 几个月(或者可能超过一年),然后我收到了这个错误。

最终起作用的是将我的代码更新为 use Twilio\Rest\Client;,然后通过 new Client($this->config['account_sid'], $this->config['auth_token']);.

创建客户端对象

这似乎是 Twilio 的新做事方式。

These docs 有帮助。