ошибки компилятора — как включить php-файл, содержащий команду «use» в другой файл с классом

У меня есть два файла.

в первом файле (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);
?>

скрипт работает нормально!

1

Решение

я нашел решение для моей проблемы. Проблема заключается в строках включения в первом файле, потому что test.php находится в другом пути иерархии второго файла.

Я нашел ошибку, используя эти строки кода:

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

Я прошу прощения, но иногда самые очевидные вещи, которые находятся вне нашего контроля.

спасибо всем за поддержку

2

Другие решения

Я сам столкнулся с этой проблемой на раннем этапе, потому что я не привык использовать эти команды. Use Команды должны использоваться в том же файле, в котором вызываются функции, относящиеся к ним. Так что если File A содержит инициализацию SDK, и вы пытаетесь use команды, то ваши запросы API должны работать. Если File B требуется или включен в File A (или наоборот), вы должны добавить команды использования в Файл B, чтобы инициировать любые функции Graph, но они все равно должны работать. Похоже на то use Команды работают только внутри файла, для которого они расположены, и не для других.

Во втором файле добавьте use Команды, которые вам нужны, и я верю, что вы найдете это будет работать. В вашем конкретном случае вам также может понадобиться это в рамках вашей функции.

0