[英]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.