我有以下代码
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));
如果没有文档的更新,代码对于您编写它的方式究竟应该发生什么是模棱两可的。