2012-11-20 39 views
0

我正在使用FOSUserBundle与FOSFacebookBundle的示例。在此之后,我构建了我的应用程序。如何包含Facebook-SDK

相关的项目结构就像是以下几点:FacebookProvider的

src\ABC\MainBundle\ 
src\ABC\UserBundle\ 

src\ABC\MainBundle\Controller\DefaultController.php 

src\ABC\UserBundle\Security\User\Provider\FacebookProvider.php 

vendor\facebook\php-sdk\src\base_facebook.php 

部分:

use \BaseFacebook; 
use \FacebookApiException; 

class FacebookProvider implements UserProviderInterface 
{ 

protected $facebook; 

public function __construct(BaseFacebook $facebook, $userManager, $validator) 
{ 
    $this->facebook = $facebook; 
} 

public function loadUserByUsername($username) 
{   
    try { 
     $fbdata = $this->facebook->api('/me'); 

... 

正如你可以看到已经有可用的Facebook的对象。 我想现在做的是几乎相同的,但在我DefaultController:

use \BaseFacebook; 
use \FacebookApiException; 

class DefaultController extends BaseController 
{ 
    public function indexAction(){ 
     $facebook = new Facebook('key', 'secret'); 
     $fbfriends_obj = $facebook->api('/'.$fbid.'/friends'); 
... 

但我得到的消息

Fatal error: Class 'ABC\MainBundle\Controller\Facebook' not found in C:\xampp\htdocs\...\src\ABC\MainBundle\Controller\DefaultController.php on line x 

这是为什么?我如何从defaultcontroller中访问facebook-class?如果它已经可以为facebook供应商,为什么它不可能我的控制器?

任何提示将非常感激!

回答

0

的解决这一问题,即Facebook的类没有命名空间,你必须做一些像

$facebook = new \Facebook(...) 
0

问题是在这里:

use \BaseFacebook; 
use \FacebookApiException; 

您从导入BaseFacebook类命名空间应该使用\ Facebook(在Controller和FacebookProvider类中)