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

问题描述 投票:0回答:2

我一直在使用 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

我在类的方法中调用 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 composer-php twilio twilio-php ratchet
2个回答
1
投票

我必须更新 Twilio,

composer require twilio/sd

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

现在我可以

use Twilio\Rest\Client;
因为它之前丢失了。


0
投票

使用命名空间时,PHP 将始终开始寻找当前类中没有以自己的命名空间为前缀的类。

在你的情况下,当前命名空间是

Websocket
,因此PHP正在尝试自动加载类
Websocket\Client
,为了防止这种情况,你有两个选择:

1) 使用

use
告诉 PHP 去哪里查找:

use Twilio\Rest\Client;

2)添加正确的命名空间

$client = new \Twilio\Rest\Client($sid, $token);
© www.soinside.com 2019 - 2024. All rights reserved.