Я попытался пройти все учебники и ответы удаленно близко к этому без такой удачи.
Я могу заставить свой код работать в одном файле, но я пытаюсь разделить его на класс (контроллер вызывает коллекционер). При перемещении кода в коллекционер (который я включаю в начале) PHP останавливается на строке "--->":
public function FacebookClientObject() {
$facebookId = "xxxxx";
$facebookAppSecret = "yyyyy";
--->FacebookSession::setDefaultApplication($facebookId, $facebookAppSecret);
echo "default set";
}
Предполагая, что это потому, что функция не имеет доступа к статическому методу, я пробовал
use Facebook\FacebookSession;
в начале функции. Когда это добавлено, сборщик не может быть включен в начале контроллера. Я переместил автозагрузчик вокруг двух файлов (в том числе в начало FacebookClientObject()) и подтвердил, что он загружается с помощью эхо-заявлений и, похоже, не влияет на эту проблему.
Я даже включил файл, используя
require_once(FULLPATH . 'libs/facebook-php-sdk-v4/src/Facebook/FacebookSession.php');
вместо use Facebook\FacebookSession;
Я чувствую, что это должно быть что-то очень простое, что я просто не замечаю.
Проблема заключалась в том, как я пытался использовать пространства имен.
1) Я use Facebook\yyyyyy;
внутри функции, а также просто внутри класса. Это вызвало ошибки в обоих местах. Такой код относится к началу файла перед объявлением класса.
2) При попытке require_once файлов вместо этого у него не было задано пространство имен, поэтому автозагрузчик Facebook не смог найти классы, которые также вызвали ошибку. Это было даже при том, что я мог проверить, что классы были объявлены с помощью print_r(get_declared_classes());
,
3) Важное значение имеет добавление error_reporting(E_ALL);
и ini_set('display_errors', 1);
к началу моего кода. Пока я мог понять, какие строки вызывают проблемы, я не знал, почему до этого.
Спасибо, халфер!
error_reporting(-1);
временно к самому верхнему сценарию, чтобы вы могли видеть ошибки на экране.