CodeIgniter Facebook SDK 4 с композитором

Я пытаюсь установить и запустить SDK для Facebook на CodeIgniter с помощью Composer.

CodeIgniter установлен и работает красиво.

Поддержка композитора была добавлена:

  • curl -s http://getcomposer.org/installer | php
  • touch composer.json
  • Добавлены строки composer.json файл composer.json ( "facebook/php-sdk-v4" : "4.0.*" )
  • composer update Ran- composer update

Все пошли на план. Composer создал папку /vendor , и там есть SDK для Facebook.

Затем я добавил поддержку Composer для CodeIgniter, добавив строку include_once './vendor/autoload.php'; вверху index.php .

На данный момент ошибок нет.

Теперь я хочу позвонить в SDK. Однако, похоже, я не могу использовать какие-либо из классов Facebook. См. Ниже, что было сделано и не удалось …


var_dump(class_exists('Facebook')); показывает bool(false)


FacebookSession::setDefaultApplication('app id removed', 'app secret removed');

Выплескивает:

Fatal error: Class 'FacebookSession' not found in /var/sites/***/public_html/application/controllers/welcome.php on line 13


И более полный пример:

 <?php class Welcome extends CI_Controller { use Facebook\FacebookSession; use Facebook\FacebookRequest; use Facebook\GraphUser; use Facebook\FacebookRequestException; public function index() { FacebookSession::setDefaultApplication('app id removed', 'app secret removed'); } } 

Выплевывает: Fatal error: Welcome cannot use Facebook\FacebookSession - it is not a trait in /var/sites/***/public_html/application/controllers/welcome.php on line 5

    Вы смешали позицию оператора USE. Что вы можете сделать, так это объявить классы из FB SDK снаружи и перед классом, а не внутри. Используя «Использовать внутри класса», вы указываете на функциональность функции, которая должна быть включена в класс.

     <?php class MyClass extends MyBaseClass { // this is a namespaced trait inside the class // = extend class with trait use SomeWhere\Trait; } ?> 

     <?php // this is the declaration of a namespaced class outside of the class use SomeWhere\Class; class MyClass extends MyBaseClass { public function helloWorld() { $c = new Class; // ... } } ?> 

    Ваш код будет:

     <?php use Facebook\FacebookSession; use Facebook\FacebookRequest; use Facebook\GraphUser; use Facebook\FacebookRequestException; class Welcome extends CI_Controller { public function index() { FacebookSession::setDefaultApplication('app id removed', 'app secret removed'); } }