2016-02-04 6 views
1

Я использую Symfony3 для создания приложения на основе Twilio TaskRouter, которое использует библиотеку twilio-php.TaskRouter в библиотеке twilio-php для Symfony3

Все остальные компоненты Symfony используют соглашение об именах PS-0 или PS-4, в то время как стандартная библиотека twilio-php не использует то же самое, поэтому я не могу напрямую использовать определенные классы (в моем случае taskrouter) ,

Класс, о котором идет речь, является Services_Twilio_TaskRouter_Worker_Capability, который находится в twilio-php/sdk/Services/CapabilityTaskRouter.php.

Symfony ожидает, что класс будет находиться в каталоге vendor/twilio/sdk/Services/Twilio/TaskRouter/Worker/Capability, который он не может найти.

Есть ли способ включить vendor/twilio/sdk/Services/CapabilityTaskRouter.php в класс symfony и расширить класс Services_Twilio_TaskRouter_Worker_Capability?

+0

Вы пробовали устанавливать https: // GitHub. com/fridolin-koch/VreshTwilioBundle, который обертывает Twilio SDK и позволяет назвать его услугой? –

ответ

0

По-моему, это возможно. Чтобы логика включения была отделена от кода проекта, вы должны создать класс-оболочку, который следует за соглашениями об именах PSR-4, которые просто расширяют класс Twilio.

<?php 

    namespace MyProject\Service; 

    require_once('path/to/twilio-php/sdk/Services/CapabilityTaskRouter.php'); 

    class CapabilityTaskRouter extends \Services_Twilio_TaskRouter_Worker_Capability 
    { 
    } 

Это путь, мы сделали много раз интегрировать библиотеки не следующие PSR концепции auloading в наши проекты.

+0

Я попытался добавить функцию require_once, но то же самое продолжает выходить из строя, говоря, что он не может найти файл. –

1

Вы можете установить LIB в поставщике, запустив:

composer require twilio/sdk 

и композитор добавит LIB в папку поставщика и вы контроллер вы сможете назвать это нравится:

$sid = "ACXXXXXX"; // Your Account SID from www.twilio.com/user/account 
$token = "YYYYYY"; // Your Auth Token from www.twilio.com/user/account 

$client = new Services_Twilio($sid, $token); 
$message = $client->account->messages->sendMessage(
    '9991231234', // From a valid Twilio number 
    '8881231234', // Text this number 
    "Hello monkey!" 
); 

print_r($message->sid); 
+0

Да, это то, что я сделал. Вышеупомянутое работает, когда я использую стандартную инфраструктуру php, но как только я начну использовать symfony, это не сработает. –

+0

какая у вас ошибка? –

0

Сотрудник Twilio здесь.

Я пошел по пути реализации вспомогательного расширения до https://github.com/fridolin-koch/VreshTwilioBundle и в этом процессе обнаружил, что это действительно проблема библиотеки вспомогательных библиотек twilio-php из-за соглашений об именах и автозагрузки этих конкретных классов.

я намерен закончить расширение помощника для VreshTwilioBundle, однако, это PR, который я представил, что должен держать вас двигаться вперед:

https://github.com/twilio/twilio-php/pull/288

Смежные вопросы