2014-12-11 61 views
-1

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

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

回答

0

你可以在你的包命名空间创建目录 - 像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(); 
+0

如果我把我的twitterOath在供应商/组件什么是我的BundleNamespace – ahmadox 2014-12-11 09:58:44

+0

不,不这样做。在供应商目录中应该放置代码,这些代码可能由作曲家从packagist中检索。你可以将它上传到packagist,但我认为你不需要它。将它放在捆绑包中更好(很明显,供应商/不是那么好的地方)。 – Alex 2014-12-11 10:37:50

0

可能是这样?:

添加consumerKeyconsumerSecret ......到paramters.yml文件,创建你的包的根directiry一个目录下,前,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); 
+0

我必须在我的目录twitter-sdk中创建类TwitterSDKManager吗?以及我可以在哪里找到服务配置文件 – ahmadox 2014-12-11 09:36:24

相关问题