【发布时间】:2018-08-17 18:57:56
【问题描述】:
如果我有一个项目,其中包含一组位于命名空间 CORE 中的核心函数和一组位于命名空间 PROJECT 中的项目文件,那么我是否可以授予 PROJECT 中的文件访问权限到CORE 中的所有函数,而不必在CORE\ 前加前缀?
我知道我可以为每个功能use function CORE\func1,但我想知道是否有任何方法可以覆盖use CORE
编辑:
这是我的测试文件:
index.php:
<?php
namespace PROJECT;
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
include_once 'core.php';
include_once 'project.php';
// both work
print \CORE\corefunc();
print projfunc();
// Works
// use function CORE\corefunc;
// print corefunc();
// Does not work
use CORE;
print corefunc();
core.php:
<?php
namespace CORE;
function corefunc()
{
return "I'm CORE<br>";
};
project.php:
<?php
namespace PROJECT;
function projfunc()
{
return "I'm PROJECT<br>";
}
在浏览器中输出:
I'm CORE
I'm PROJECT
Fatal error: Uncaught Error: Call to undefined function corefunc() in /development/FWTest/index.php:18 Stack trace: #0 {main} thrown in /development/FWTest/index.php on line 18
【问题讨论】:
-
并不是说听起来粗鲁之类的,但是您不能在您的代码上尝试一下吗?
-
我做了,但它不起作用,因此我的问题
-
我不明白我错过了什么。反对票和您的评论表明我很愚蠢,这应该可行。我错过了什么?
-
usenotinclude()或require()任何文件,它“只是告诉 PHP 在哪里查找”。反对票可能是因为你一开始就没有代码 -
当然,我手动包含实际文件(在此示例中,为了理解 PHP 命名空间的这一部分)
标签: php namespaces