是否可以在PHP中导入整个命名空间?

时间:2018-03-09 08:47:20

标签: php namespaces

如果我的项目包含名称空间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

1 个答案:

答案 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

相关问题