簡體   English   中英

如何將php文件包含在帶有類的另一個文件中的包含“ use”命令

[英]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);
?> 

腳本運行良好!

我為我的問題找到了解決方案。 問題出在第一個文件的包含行中,因為test.php位於第二個文件的不同層次結構路徑中。

我使用以下幾行代碼發現了錯誤:

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

我深表歉意,但有時候最明顯的事情超出了我們的控制范圍。

感謝大家的支持

我自己很早就遇到了這個問題,因為我不習慣使用這些命令。 Use命令必須在與它們相關的函數被調用的同一文件中使用。 因此,如果File A包含SDK初始化並且您嘗試use命令,那么您的API請求應該可以工作。 如果File B是必需的或包含在File A (反之亦然),則必須在文件B中添加使用命令以啟動任何Graph函數,但它們仍應起作用。 似乎use命令僅在它們所在的文件中有效,而其他命令則無效。

在第二個文件中,添加您需要的use命令,我相信您會發現它會起作用。 在您的特定情況下,您可能還需要在功能范圍內使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM