Как включить PHP-файл содержит команду "использовать" в другом файле с классом

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

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

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

2 ответа

Решение

Я нашел решение для моей проблемы. Проблема заключается в строках включения в первом файле, потому что 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 Команды, которые вам нужны, и я верю, что вы найдете, что это будет работать. В вашем конкретном случае вам также может понадобиться это в рамках вашей функции.

Другие вопросы по тегам