我有以下代码
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更改一次。静力学甚至可以实现这一点吗?
答案 0 :(得分:1)
将你的行分成两行,它应该像你期望的那样适用于你:
$className = 'Models\\DataMappers\\Clients\\' . self::$configClassName;
$className = $className::$db_type;
在旁注中,我无法在PHP docs中找到范围解析运算符(::
)是左对联还是右对联。可能是它试图按如下方式解释该行:
('Models\\DataMappers\\Clients\\'.self::($configClassName::$db_type));
如果没有来自文档的更新,那么代码对于应该按照您编写的方式发生的内容是不明确的。