我正在使用FOSUserBundle和FOSFacebookBundle的示例。我在这里构建了我的应用程序。
相关的项目结构如下:
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类?如果它已经可以用于facebookprovider,为什么它不能用于我的控制器?
任何提示都会非常感激!
答案 0 :(得分:0)
该问题的解决方案是,facebook-class没有命名空间,你必须做类似
的事情$facebook = new \Facebook(...)
答案 1 :(得分:0)
问题出在这里:
use \BaseFacebook;
use \FacebookApiException;
您正在从命名空间导入BaseFacebook类,您应该使用\ Facebook(在Controller和FacebookProvider类中)