对静态类成员的访问不正确


Incorrect access to static class member

我有以下代码

class DataMapperFactoryBeta
{
    static private $configClassName = 'ConfigBeta';
    static private $client;
    static private $mapper = [];

    static public function initClient()
    {
        $className = 'Models''DataMappers''Clients'''.self::$configClassName::$db_type;
    }
}

解释器向我抛出一个致命错误:"对静态类成员的不正确访问"。我希望动态访问 config 类名,因为我将来会更改它,并且我不想在代码中的许多地方更改它,只通过$configClassName更改一次。这甚至可以用静态吗?

将你的行一分为二,它应该像你期望的那样为你工作:

$className = 'Models''DataMappers''Clients''' . self::$configClassName;
$className = $className::$db_type;

附带说明一下,我在 PHP 文档中找不到范围解析运算符 ( :: ) 是左关联还是右关联。可能是它试图按如下方式解释该行:

('Models''DataMappers''Clients'''.self::($configClassName::$db_type));

如果没有文档的更新,代码对于您编写它的方式究竟应该发生什么是模棱两可的。