如果我的项目包含名称空间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
答案 0 :(得分:0)
假设您有functions-core.php
:
<?php
namespace Core;
function test() {
return "Core-Test";
}
和functions-project.php
:
<?php
namespace Project;
function test() {
return "Project-Test";
}
并在main.php
中执行:
<?php
include ('functions-core.php');
include ('functions-project.php');
如果要从文件中删除命名空间,则会收到错误:
PHP致命错误:无法重新声明test()(之前在...中声明
使用命名空间PHP知道那些是&#34;不同的&#34;函数,可以加载它们而不会出错。然后,您可以像使用
一样进行访问echo Core\test();
echo Project\test();
在main.php
中。 HTH