Php 在包含的文件中使用关键字范围

Php 在包含的文件中使用关键字范围,php,namespaces,Php,Namespaces,我通过Composer安装了Facebook SDK v4.0.0 根据入门说明,我使用以下代码自动加载库: require_once.php <?php define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/vendor/facebook/php-sdk-v4/src/Facebook/'); require __DIR__ . '/vendor/autoload.php'; ?> 下面是我的index.php的结构: <?php

我通过Composer安装了Facebook SDK v4.0.0

根据入门说明,我使用以下代码自动加载库:

require_once.php

<?php
define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/vendor/facebook/php-sdk-v4/src/Facebook/');
require __DIR__ . '/vendor/autoload.php';
?>

下面是我的index.php的结构:

<?php
require_once('require_once.php');
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookJavaScriptLoginHelper;
use Facebook\FacebookRedirectLoginHelper;
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
</head>
<body>
<?php require_once('inc/head.inc.php'); ?>
</body>
</html>

试验
对于inc/head.inc.php,它包含访问Graph API的代码(省略了处理Facebook登录的代码):


错误显示:

致命错误:在/path/to/inc/head.inc.php中找不到类“FacebookRequest”

这迫使我在head.inc.php的开头添加
use
行,以删除此致命错误。我希望
use
行在
index.php
中声明,并且它将在所需的文件中可用,但它不是

我的问题是,我如何避免在所有包含/必需文件的开头添加
use
行(即,是否可以在公共包含文件中共享
use
行?)

p、 使用PHP5.5.9

有关州的文档:

导入规则基于每个文件,这意味着包含的文件将不会继承父文件的导入规则


这意味着您不能仅使用类的基名称为要访问的类“准备”具有别名的子脚本。每个脚本必须定义自己的别名(在同一个文件中)或始终使用规范类名。

use
语句在文件级别运行,因此不可以。唯一的替代方法是使用完全限定的类名,例如
new\Facebook\Facebook请求($session…
好主意。然后
use
行也可以省略。您可以将其作为答案吗?(p.s.希望PHP将来改进此
use
关键字)
<?php
$user = (new FacebookRequest($session, 'GET', '/me'))->execute()->getGraphObject(GraphUser::className());
$picture = (new FacebookRequest($session, 'GET', '/me/picture?type=small&redirect=false'))->execute()->getGraphObject()->asArray();
$helper = new FacebookRedirectLoginHelper(REDIRECT_URL);
?>