PHP - 如何在作曲家命名空间环境中访问Twilio

问题描述:

我一直在使用Rachet WebSockets并创建了一个简单的聊天应用程序。该示例使用WebSocket命名空间。这是我第一次使用命名空间。现在我试图添加Twilio服务,但似乎可以将Twilio添加到我的名称空间中。PHP - 如何在作曲家命名空间环境中访问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 ......

我很新的作曲家和命名空间,希望这是足够的信息来帮助我。

+0

有趣的部分是:当您使用Composer时,为什么在“using-without-composer”锚点链接到该网站? – Sven

我不得不更新Twilio,

composer require twilio/sd

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

现在我能够use Twilio\Rest\Client;,因为它是前失踪。

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

在你的情况下,当前的命名空间将Websocket,因此PHP试图自动加载类Websocket\Client,防止这种情况,你有两个选择:

1)告诉PHP,其中通过使用use看:

use Twilio\Rest\Client; 

2)前面加上正确的名称空间

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

尝试'$ client = new \ Twilio \ Rest \ Client($ sid,$ token);'它说'Class'Twilio \ Rest \ Client'找不到'我是否需要将twilio添加到我的autoload_psr4或autoload_namespace? – K3NN3TH