PHP - 如何在 composer 命名空间环境中访问 Twilio

PHP - How to access Twilio in a composer namespace environment

我一直在使用 Rachet WebSockets 并创建了一个简单的聊天应用程序。该示例使用 WebSocket 名称空间。这是我第一次使用命名空间。现在我正在尝试添加 Twilio 服务,但似乎可以将 Twilio 添加到我的命名空间。

我知道它是在 autoload_files.php

中自动加载的
<?php

// autoload_files.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    $vendorDir . '/twilio/sdk/Services/Twilio.php',
);

在composer.json文件中

{
    "autoload": {
        "psr-0": {
            "Websocket": "src"
        }
    },
    "require": {
        "cboden/ratchet": "^0.3.3",
        "twilio/sdk": "^4.5"
    }
}

我遵循了这个网站的步骤:https://www.twilio.com/docs/libraries/php#using-without-composer

我在 class 的方法中调用 twilio,如下所示:

$AccountSid = "xxxxxxxxxxxxxxxxx";
$AuthToken = "xxxxxxxxxxxxxxxxx";

$client = new Client($sid, $token);

$message = $client->account->messages->create(array( 
    'To' => "+555555555", 
    'From' => "+555555555", 
    'Body' => "This is a test",   
));

不断收到此错误:Uncaught Error: Class 'Websocket\Client' not found in ......

我对作曲家和命名空间还很陌生,希望这些信息足以帮助我。

使用命名空间时,PHP 将始终开始寻找 class 当前命名空间中未添加自己命名空间的元素。

在你的例子中,当前的命名空间是 Websocket,因此 PHP 试图自动加载 class Websocket\Client,为了防止这种情况,你有两个选择:

1) 使用 use 告诉 PHP 在哪里看:

use Twilio\Rest\Client;

2) 添加正确的命名空间

$client = new \Twilio\Rest\Client($sid, $token);

我必须更新 Twilio,

运行 composer require twilio/sd

- Removing twilio/sdk (4.12.0)
- Installing twilio/sdk (5.4.1)
Downloading: 100%         

现在我可以 use Twilio\Rest\Client; 因为它以前不见了。