我正在尝试实施新的facebook php SDK,虽然这样做但我遇到了一个问题,我不太明白。
我会将以下代码包含在我的所有文件中:
## Include.php
require_once("class/facebook_source/autoload.php");
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
在另一个文件中,我想访问一些功能,例如FacebookRequest:
## FILE1.php
require("include.php");
$user_profile = (new FacebookRequest(
$session, 'GET', '/me'
))->execute()->getGraphObject(GraphUser::className());
问题是,FILE1.php将因未知的类错误而失败。
我发现,如果我添加:
use Facebook\FacebookRequest;
到FILE1.php它会起作用
所以我的问题是:为什么即使我已经在include.php中进行了重新声明,为什么它仍然是重要的?
答案 0 :(得分:0)
以下是您必须在第二个文件中再次使用的原因。阅读最后一行。
用于导入的范围规则
导入的范围规则必须在。中声明use关键字 文件的最外层范围(全局范围)或命名空间内部 声明。这是因为导入是在编译时完成的 而不是运行时,因此它不能是块作用域。
注意:
导入规则是基于文件的,意味着包含的文件不会 继承父文件的导入规则。
<强> Reference 强>
请注意,您并非重新声明类,您只是在新范围内重新声明别名。