4

根据PSR-0定义(自动加载),我有一个包含类和函数定义的文件:

namespace Foo;

function b() {};

class Bar {}

我有那个类的测试,放在同一个命名空间中:

namespace Foo;

class BarTest {}

当我尝试访问b()测试类中的函数时,出现undefined function错误:

namespace Foo;

class BarTest extends PHPUnit_Framework_TestCase
{
    public function testSomething()
    {
        b();
        Foo\b();
        \b();
    }
}

似乎没有任何效果。我怎样才能调用该函数?

4

2 回答 2

1

PHP 自动加载不支持函数。但是它确实适用于静态类方法:

namespace Foo;

abstract class Util
{
    static function doSomething() {

    }
}

然后,您可以use将该类放在当前命名空间的其他一些文件中并调用静态方法:

use Foo\Util;

Util::doSomething();

由于这是一个类方法并且自动加载是针对类的,所以这确实有效。

请注意,在命名空间/类中对方法进行分组的更正确方法也可能是使其成为finalDocs,但是 PHP 不支持这一点(请参阅无法创建最终抽象类PHP Sadness #41)

您可以在网站上的以下问答材料中找到这一点:

于 2013-03-09T06:49:34.970 回答
0

你的函数 b(); 必须有身体,把它改成

function b(){};

于 2013-03-09T00:28:49.130 回答