2014-10-16 131 views
1

我有兩個文件。如何在包含'use'命令的文件中包含另一個文件

在所述第一文件(Facebook.php)我是否通過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); 
?> 

腳本運行正常!

+0

「*導致編譯時間錯誤*」 - 你會得到什麼錯誤信息?我們應該神奇地猜測它是什麼?你在運行什麼版本的PHP? 5.3中引入了「使用」。 – DCoder 2014-10-16 19:17:12

+0

高達5.4我知道..和腳本運行良好,如果我包括並在沒有類的測試文件中使用它 – giorgio83 2014-10-16 19:20:04

回答

2

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

我發現使用這些代碼行的錯誤:最明顯的事情是我們無法控制的

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

我很抱歉,但有時。

感謝大家的支持

0

我很早就遇到了這個問題,因爲我不習慣使用這些命令。 Use命令必須在與其相關的函數被調用的相同文件中使用。因此,如果File A包含SDK初始化並且您嘗試使用use命令,那麼您的API請求應該可以工作。如果需要File B或包含在File A(或反之亦然)中,則必須在文件B中添加使用命令以啓動任何圖形函數,但它們仍應能工作。看起來use命令只能在它們所在的文件中工作,沒有其他文件。

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

相關問題