编程语言
首页 > 编程语言> > php – 同一文件中的函数和类:未定义函数

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();

由于这是一个类方法,并且自动加载适用于类,因此这确实有效.

请注意,在命名空间/类中对方法进行分组的更正确方法可能也是finalDocs,但PHP不支持(参见Cannot create a final abstract class­PHP 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