为什么 "use" 包含在 php 中时不起作用?
Why does "use" not work when included in php?
我正在更新我的应用程序以使用新的 PHP SDK,但我遇到了这个问题:
我想在单独的 php 文件中处理 Facebook 的内容,以保持整洁。
例如,这是我的 fb.php 页面:
<?php
require_once('sdk/autoload.php');
use Facebook\HttpClients\FacebookHttpable;
use Facebook\HttpClients\FacebookCurl;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\Entities\AccessToken;
use Facebook\Entities\SignedRequest;
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;
// start session
session_start();
// init app with app id and secret
FacebookSession::setDefaultApplication(...,...);
// see if a existing session exists
if ( isset( $_SESSION ) && isset( $_SESSION['fb_token'] ) ) {
// create new session from saved access_token
$session = new FacebookSession( $_SESSION['fb_token'] );
// validate the access_token to make sure it's still valid
try {
if ( !$session->validate() ) {
$session = null;
}
} catch ( Exception $e ) {
// catch any exceptions
$session = null;
}
}
// see if we have a session
if ( isset( $session ) ) {
// save the session
$_SESSION['fb_token'] = $session->getToken();
// create a session using saved token or the new one we generated at login
$session = new FacebookSession( $session->getToken() );
//logged in
} else {
//user is not logged in
?>
<script>window.location="...link to login page...";</script>
<?php
exit;
}
使用 Facebook 会话的页面可能如下所示 (testing.php):
<?php
require_once('fb.php');
$request = new FacebookRequest( $session, 'GET', '/me' );
$response = $request->execute();
$graphObject = $response->getGraphObject()->asArray();
echo "Welcome, ".$graphObject['first_name'];
这个returns这个错误:
Fatal error: Class 'FacebookRequest' not found
当我将 use Facebook\FacebookRequest;
放入 testing.php 时代码工作正常,但我不想这样做,因为那是将所有 Facebook 会话内容放在单独的 fb.php 文件...
这是什么原因,是否有解决方案可以将我所有的 Facebook 内容保存在一个单独的文件中?
谢谢!
您在其中包含 fb.php
的文件在不同的范围内,因此无法使用该导入。
您必须再次指定它们。
您可以阅读更多相关内容 in PHP manual。
我正在更新我的应用程序以使用新的 PHP SDK,但我遇到了这个问题: 我想在单独的 php 文件中处理 Facebook 的内容,以保持整洁。 例如,这是我的 fb.php 页面:
<?php
require_once('sdk/autoload.php');
use Facebook\HttpClients\FacebookHttpable;
use Facebook\HttpClients\FacebookCurl;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\Entities\AccessToken;
use Facebook\Entities\SignedRequest;
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;
// start session
session_start();
// init app with app id and secret
FacebookSession::setDefaultApplication(...,...);
// see if a existing session exists
if ( isset( $_SESSION ) && isset( $_SESSION['fb_token'] ) ) {
// create new session from saved access_token
$session = new FacebookSession( $_SESSION['fb_token'] );
// validate the access_token to make sure it's still valid
try {
if ( !$session->validate() ) {
$session = null;
}
} catch ( Exception $e ) {
// catch any exceptions
$session = null;
}
}
// see if we have a session
if ( isset( $session ) ) {
// save the session
$_SESSION['fb_token'] = $session->getToken();
// create a session using saved token or the new one we generated at login
$session = new FacebookSession( $session->getToken() );
//logged in
} else {
//user is not logged in
?>
<script>window.location="...link to login page...";</script>
<?php
exit;
}
使用 Facebook 会话的页面可能如下所示 (testing.php):
<?php
require_once('fb.php');
$request = new FacebookRequest( $session, 'GET', '/me' );
$response = $request->execute();
$graphObject = $response->getGraphObject()->asArray();
echo "Welcome, ".$graphObject['first_name'];
这个returns这个错误:
Fatal error: Class 'FacebookRequest' not found
当我将 use Facebook\FacebookRequest;
放入 testing.php 时代码工作正常,但我不想这样做,因为那是将所有 Facebook 会话内容放在单独的 fb.php 文件...
这是什么原因,是否有解决方案可以将我所有的 Facebook 内容保存在一个单独的文件中?
谢谢!
您在其中包含 fb.php
的文件在不同的范围内,因此无法使用该导入。
您必须再次指定它们。
您可以阅读更多相关内容 in PHP manual。