我试图通过所有的教程和答案远程接近这一点,没有这样的运气。
我能够让我的代码在同一个文件中工作,但我正在尝试将其拆分为一个类(控制器调用收集器)。当代码移动到收集器(我在开头包括)时,PHP停在“--->”行:
public function FacebookClientObject() {
$facebookId = "xxxxx";
$facebookAppSecret = "yyyyy";
--->FacebookSession::setDefaultApplication($facebookId, $facebookAppSecret);
echo "default set";
}
假设这是因为该函数无法访问静态方法,我试过
use Facebook\FacebookSession;
在函数的开头。添加此选项后,收集器无法包含在控制器的开头。我已经将自动加载器移动到两个文件周围(包括到FacebookClientObject()的开头)并确认它是通过echo语句加载的,它似乎不会影响这个问题。
我甚至使用
包含了该文件require_once(FULLPATH . 'libs/facebook-php-sdk-v4/src/Facebook/FacebookSession.php');
而不是use Facebook\FacebookSession;
我觉得这应该是非常简单的事情,我只是在忽视。
答案 0 :(得分:0)
问题在于我是如何尝试使用命名空间的。
1)我将use Facebook\yyyyyy;
放在函数内部,也放在类中。这导致了两个地方的错误。这样的代码属于类声明之前文件的开头。
2)当尝试require_once文件时,它没有设置名称空间,因此Facebook自动加载器无法找到也导致错误的类。即使我可以验证类是使用print_r(get_declared_classes());
声明的。
3)至关重要的是在我的代码开头添加error_reporting(E_ALL);
和ini_set('display_errors', 1);
。虽然我可以找出导致问题的线路,但在此之前我不知道为什么。
感谢halfer!