php – 同一文件中的函数和类:未定义函数
作者:互联网
参见英文答案 > autoload functions in php 5个
根据PSR-0定义(带自动加载),我有一个带有类和函数定义的文件:
namespace Foo;
function b() {};
class Bar {}
我对该类进行了测试,放在同一名称空间中:
namespace Foo;
class BarTest {}
当我尝试访问测试类中的b()函数时,我得到一个未定义的函数错误:
namespace Foo;
class BarTest extends PHPUnit_Framework_TestCase
{
public function testSomething()
{
b();
Foo\b();
\b();
}
}
似乎没什么用.我怎么称呼这个功能?
解决方法:
PHP自动加载不支持函数.但它确实适用于静态类方法:
namespace Foo;
abstract class Util
{
static function doSomething() {
}
}
然后,您可以在其他一些文件当前命名空间中使用该类,并调用静态方法:
use Foo\Util;
Util::doSomething();
由于这是一个类方法,并且自动加载适用于类,因此这确实有效.
请注意,在命名空间/类中对方法进行分组的更正确方法可能也是final
Docs,但PHP不支持(参见Cannot create a final abstract classPHP Sadness #41).
您可以在网站上的以下Q& A材料中找到此内容:
> Autoloader for functions – 2011年1月19日
> autoload functions in php – 2010年11月16日
> Does the PHP autoloader function also work with static method calls? – 2010年1月11日
标签:php,namespaces,psr-0 来源: https://codeday.me/bug/20190709/1410887.html