如何包含php文件包含';使用';在另一个具有类的文件中执行命令


how to include php file contains 'use' command in another file with class

我有两个文件。

在第一个文件(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);
?> 

脚本运行良好!

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

我使用以下代码行发现了错误:

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

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

感谢大家对的支持

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

在第二个文件中,添加您需要的use命令,我相信您会发现它会起作用。在您的具体情况下,您可能也需要在您的职能范围内使用它。