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

时间:2016-01-19 17:21:37

标签: php static

我有以下代码

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


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

解释者抛出一个致命的错误:'对静态类成员的错误访问'。我希望动态访问配置类名称,因为我将来会更改它,并且我不想在代码中的许多地方更改它,只需通过$ configClassName更改一次。静力学甚至可以实现这一点吗?

1 个答案:

答案 0 :(得分:1)

将你的行分成两行,它应该像你期望的那样适用于你:

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

在旁注中,我无法在PHP docs中找到范围解析运算符(::)是左对联还是右对联。可能是它试图按如下方式解释该行:

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

如果没有来自文档的更新,那么代码对于应该按照您编写的方式发生的内容是不明确的。