php - 无法在 PHP 中导入/使用命名空间函数

标签 php namespaces

我有一个名为 test.php 的命名空间文件,其中包含一个函数和一个类:

namespace Test;
function testFunc(){}
class TestClass{}

然后,如果在另一个文件中我“使用”了这两个命名空间元素,则该类有效但函数无效:

use Test\testFunc,
    Test\TestClass;

include "test.php";
new TestClass();
testFunc();

TestClass 对象创建的很好,但是我得到了 testFunc() 的 fatal error :

Fatal error: Call to undefined function testFunc()

我认为命名空间支持函数。我做错了什么?

编辑: 此处解释 - http://www.php.net/manual/en/language.namespaces.faq.php#language.namespaces.faq.nofuncconstantuse

最佳答案

参见 http://php.net/manual/en/language.namespaces.rules.php特别注意:

<?php
namespace A;
use B\D, C\E as F;

// function calls

foo();      // first tries to call "foo" defined in namespace "A"
            // then calls global function "foo"

\foo();     // calls function "foo" defined in global scope

my\foo();   // calls function "foo" defined in namespace "A\my"

F();        // first tries to call "F" defined in namespace "A"
            // then calls global function "F"

// static methods/namespace functions from another namespace

B\foo();    // calls function "foo" from namespace "A\B"

B::foo();   // calls method "foo" of class "B" defined in namespace "A"
            // if class "A\B" not found, it tries to autoload class "A\B"

D::foo();   // using import rules, calls method "foo" of class "D" defined in namespace "B"
            // if class "B\D" not found, it tries to autoload class "B\D"

\B\foo();   // calls function "foo" from namespace "B"

\B::foo();  // calls method "foo" of class "B" from global scope
            // if class "B" not found, it tries to autoload class "B"

关于php - 无法在 PHP 中导入/使用命名空间函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5647598/

相关文章:

c# - 将值从一个业务对象复制到另一个,而无需在 C# 中循环

php - (PHP) 使用命名空间前缀附加新的 XML 子元素

ruby-on-rails-3 - rspec 没有在命名空间的 Rails 3 Controller 上调用我的自定义操作?

php mysql emoji 双字符

php - 如何使用 Symfony 的序列化器正确填充 DTO 的 ArrayCollection 属性?

php - 我无法将 AND 添加到我的脚本中,以调用另一个 WHERE

c# - 命名空间和类具有相同的名称

php - 为什么我的其中一列显示为空?

javascript - str.replace 中的白名单

c# - 如何以编程方式在 XPathExpression 实例中使用 XPath 函数?