如何包含php文件包含'使用'用class命令另一个文件

时间:2014-10-16 19:02:00

标签: php compiler-errors facebook-php-sdk alias require

我有两个文件。

在第一个文件(Facebook.php)中,我通过Facebook(Facebook访问令牌)获取用户数据:

<?php

    require_once '../include/Config.php';
    require_once ( '../libs/facebook/autoload.php' );

    use Facebook\FacebookSession;
    use Facebook\FacebookRequest;
    use Facebook\FacebookRequestException;

    function getUserData($token){

      // init app with app id and secret
      FacebookSession::setDefaultApplication( FB_APP_ID,FB_APP_SECRET ); //

      // If you already have a valid access token:
      $session = new FacebookSession($token); // 'access-token'

      // To validate the session:

      try {

           $session->validate();

      } catch (FacebookRequestException $ex) {

           // Session not valid, Graph API returned an exception with the reason.
           echo $ex->getMessage();

      } catch (\Exception $ex) {

            // Graph API returned info, but it may mismatch the current app or have expired.
            echo $ex->getMessage();
      }

     if($session) {

             try {

                  $user_profile = (new FacebookRequest( $session, 'GET', '/me'))->execute()->getGraphObject()->asArray(); //(GraphUser::className());


                  // print profile data
                  echo '<pre>' . print_r( $user_profile, 1 ) . '</pre>';

                  return $user_profile;

              } catch(FacebookRequestException $e) {

                   echo "Exception occured, code: " . $e->getCode();
                   echo " with message: " . $e->getMessage();
              }
      }

}

?>

这是管理用户数据的第二个文件:

<?php

   require_once '../../../include/Facebook.php';

   class userManager {

       function __construct() {

    }

   /**
   * Get user data from facebook
   * @param user key
   * @return user data if exist else false
   */
   public function facebookSignIn($token){

        $fbUserData = getUserData($token);

        print_r($fbUserData);
   }
}
?>

在第二个文件中我想用类管理用户数据,但我认为我的脚本没有运行,因为Facebook.php中的代码行

use Facebook\FacebookSession; 
use Facebook\FacebookRequest; 
use Facebook\FacebookRequestException;

导致编译时间错误。

如果我注释掉这些行我的脚本编译但自然不会检索Facebook用户数据。

在我的课程中包含'facebook.php'的正确方法是什么? 我哪里错了?

我道歉但我不明白'使用'命令以及我如何使用它。

如果我将Facebook.php包含在没有类的测试文件中:

<?php

     require_once '../include/Facebook.php';

     $token = $_GET["token"];

     getUserData($token);
?> 

脚本运行正常!

2 个答案:

答案 0 :(得分:2)

我找到了解决问题的方法。问题出在第一个文件中的include行中,因为test.php位于第二个文件的不同层次结构路径中。

我使用以下代码行找到了错误:

error_reporting(E_ALL);
ini_set('display_errors', 1);

我道歉,但有时候是我们无法控制的最明显的事情。

感谢大家的支持

答案 1 :(得分:0)

我很早就遇到了这个问题因为我不习惯使用这些命令。 Use命令必须在调用相对于它们的函数的同一文件中使用。因此,如果File A包含SDK初始化并且您尝试use命令,那么您的API请求应该有效。如果File B中需要File A(或反之亦然),则必须在文件B中添加使用命令以启动任何图形函数,但它们仍应有效。似乎use命令只能在它们所在的文件中工作,而不能在其他文件中工作。

在第二个文件中,添加您需要的use命令,我相信您会发现它可以正常运行。在您的特定情况下,您可能还需要在您的功能中使用它。