php重新声明使用类

时间:2014-12-30 09:00:09

标签: php facebook facebook-php-sdk

我正在尝试实施新的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中进行了重新声明,为什么它仍然是重要的?

1 个答案:

答案 0 :(得分:0)

以下是您必须在第二个文件中再次使用的原因。阅读最后一行。

  

用于导入的范围规则

     

导入的范围规则必须在。中声明use关键字   文件的最外层范围(全局范围)或命名空间内部   声明。这是因为导入是在编译时完成的   而不是运行时,因此它不能是块作用域。

     

注意:

     

导入规则是基于文件的,意味着包含的文件不会   继承父文件的导入规则。

<强> Reference

请注意,您并非重新声明类,您只是在新范围内重新声明别名。