0

FOSFacebookBundle を使用した FOSUserBundle の例を使用しています。ここで私は自分のアプリケーションを構築しました。

関連するプロジェクト構造は次のようになります。

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

FacebookProvider の一部:

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-Object は既に利用可能です。私が今やりたいことはほぼ同じですが、私の 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 にアクセスするにはどうすればよいですか? facebookprovider で既に可能である場合、なぜ私のコントローラーで可能ではないのですか?

どんなヒントでも大歓迎です!

4

2 に答える 2

0

問題はここにあります:

use \BaseFacebook;
use \FacebookApiException;

\Facebook を使用する必要がある名前空間から BaseFacebook クラスをインポートしています (Controller および FacebookProvider クラスで)

于 2012-11-20T16:46:09.867 に答える
0

その問題の解決策は、facebook-class に名前空間がなく、次のようなことをしなければならないことです。

$facebook = new \Facebook(...)
于 2012-11-20T15:05:50.603 に答える