Php 如何在symfony2中调用控制器的外部类

Php 如何在symfony2中调用控制器的外部类,php,symfony,twitter,controller,Php,Symfony,Twitter,Controller,如何在我的控制器中包含此代码? 我必须创建目录到供应商或类似的东西吗 require_once('twitter-sdk/twitteroauth.php'); $consumerKey = 'xxxxxxxxxxxxx'; $consumerSecret = 'xxxxxxxxxxxxx'; $accessToken = 'xxxxxxxxxxxxxxxxxxxxxxxxx'; $accessTokenSecret = 'xxxxxxxxxxxxxxxxxxxxxxxx'; $messag

如何在我的控制器中包含此代码? 我必须创建目录到供应商或类似的东西吗

require_once('twitter-sdk/twitteroauth.php');


$consumerKey = 'xxxxxxxxxxxxx';
$consumerSecret = 'xxxxxxxxxxxxx';
$accessToken = 'xxxxxxxxxxxxxxxxxxxxxxxxx';
$accessTokenSecret = 'xxxxxxxxxxxxxxxxxxxxxxxx';
$message = "je suis entrain de tester quelque chose"; // Message à tweeter : doit contenir moins de 140 caractères


$tweet = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
$res = $tweet->post('statuses/update', array('status' => $message));
print_r($res);

您可以在bundle名称空间中创建目录,比如TwitterOAuth/并在其中创建两个php文件:第一个是WutterOAuth类定义,第二个是具有身份验证逻辑的文件(它可能被称为TwitterOAuthProvider或其他文件)。将适当的名称空间放入这两个名称空间中

TwitterOAuth:

<?php
namespace YourBundleNamespace\TwitterOAuth;

class TwitterOAuth {
// twitteroauth implementation
}
从控制器中调用它,如下所示:

$this->get('twitter_oauth_provider')->authenticate();
可能是这样吗

添加
consumerKey
consumercret
。。。要
parameters.yml
文件,请在捆绑包的根目录中创建一个目录,例如,
Component
,将
twitter sdk
复制到其中,创建服务类,注册它:

class TwitterSDKManager
{
    private $consumerKey;
    private $consumerSecret;
    private $accessToken;
    private $accessTokenSecret;
    private $message;

    public function __construct($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret)
    {
        $this->consumerKey = $consumerKey;
        $this->consumerSecret = $consumerSecret;
        ...
    }

    public function getOAuth()
    {
        return new TwitterOAuth($this->consumerKey, $this->consumerSecret, $this->accessToken, $this->accessTokenSecret);
    }

    ...
}
服务配置:

...

<parameter key="twitter_sdk.manager.class">Vendor\MyBundle\Manager\TwitterSDKManager</parameter>

....

<service id="twitter_sdk.manager" class="%twitter_sdk.manager.class%">
    <argument key='consumerKey'>%consumerKey%</argument>
    <argument key='consumerSecret'>%consumerSecret%</argument>
    ....
</service>
...

我是否必须在目录TwitterSDK中创建TwitterSDKManager类?我可以在哪里找到服务配置文件如果我把我的Twitter誓言放在供应商/组件中我的BundleNamespaceNo是什么,不要这样做。在供应商目录中应该放置代码,该代码可能由编写器从PackageGist中检索。你可以上传到packagist,但我想你不需要它。在您的情况下,最好将其保存在您的捆绑包中(很明显,供应商/不是这样做的好地方)。
class TwitterSDKManager
{
    private $consumerKey;
    private $consumerSecret;
    private $accessToken;
    private $accessTokenSecret;
    private $message;

    public function __construct($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret)
    {
        $this->consumerKey = $consumerKey;
        $this->consumerSecret = $consumerSecret;
        ...
    }

    public function getOAuth()
    {
        return new TwitterOAuth($this->consumerKey, $this->consumerSecret, $this->accessToken, $this->accessTokenSecret);
    }

    ...
}
...

<parameter key="twitter_sdk.manager.class">Vendor\MyBundle\Manager\TwitterSDKManager</parameter>

....

<service id="twitter_sdk.manager" class="%twitter_sdk.manager.class%">
    <argument key='consumerKey'>%consumerKey%</argument>
    <argument key='consumerSecret'>%consumerSecret%</argument>
    ....
</service>
...
$tweet = $this->get('twitter_sdk.manager')->getOAuth();

$res = $tweet->post('statuses/update', array('status' => 'Message'));
print_r($res);