根据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();
}
}
似乎没什么用。我怎么称呼这个功能?
答案 0 :(得分:1)
PHP自动加载不支持函数。但它确实适用于静态类方法:
namespace Foo;
abstract class Util
{
static function doSomething() {
}
}
然后你可以use
在其他一些文件当前命名空间中的那个类并调用静态方法:
use Foo\Util;
Util::doSomething();
由于这是一个类方法,并且自动加载适用于类,所以这确实有效。
请注意,在命名空间/类中对方法进行分组的更正确方法可能也是final
Docs,但是PHP不支持(参见Cannot create a final abstract classPHP Sadness #41)。
您可以在网站上的以下Q& A材料中找到此内容:
答案 1 :(得分:0)
你的功能b();必须有身体,将其改为
function b(){};