Я пытаюсь установить и запустить 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'); } }