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

时间:2014-12-11 02:17:14

标签: php symfony twitter controller

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

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);

2 个答案:

答案 0 :(得分:0)

您可以在bundle命名空间中创建目录 - 比如TwitterOAuth /并创建两个php文件:第一个是wuth TwitterOAuth类定义,第二个是带有身份验证逻辑(可能叫做TwitterOAuthProvider或其他东西)。将两个适当的命名空间放入其中。

TwitterOAuth对象:

<?php
namespace YourBundleNamespace\TwitterOAuth;

class TwitterOAuth {
// twitteroauth implementation
}

TwitterOAuthProvider:

<?php
namespace YourBundleNamespace\TwitterOAuth;
class TwitterOAuthProvider
{
    public function authenticate()
    {
        // here is authentication logic
    }
}

然后你可以将第二堂课注册为服务:

twitter_oauth_provider:
    class: YourBundleNamespace\TwitterOAuth\TwitterOAuthProvider

从控制器中调用它:

$this->get('twitter_oauth_provider')->authenticate();

答案 1 :(得分:0)

可能是这样的吗?:

consumerKeyconsumerSecret,...添加到paramters.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>
...

用法(例如,在控制器中):

$tweet = $this->get('twitter_sdk.manager')->getOAuth();

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