使用';new CLASSNAME()';作为PHP中的数组值


Using 'new CLASSNAME()' as array value in PHP

我目前正在制作一个转换脚本。我有6个数据库需要使用。我正在使用PDO,我的想法是用尽可能少的代码制作所有东西。我想把我的数据库放在一个数组中。

我尝试使用:

private $databaseConnections = array(
    'db1' => new PDO('mysql:host=localhost;dbname=db1;charset=utf8', 'user', 'pass'),
    'db2' => new PDO('mysql:host=localhost;dbname=db2;charset=utf8', 'user', 'pass')
);

但我得到了以下错误:

Parse error: syntax error, unexpected 'new' (T_NEW) in ... on line 11

为什么我不能使用新的PDO作为数组值?

引用PHP文档

声明[属性]可能包括一个初始化,但该初始化必须是一个常数值——也就是说,它必须能够在编译时进行求值,并且必须不依赖于运行时信息才能进行求值。

解决方案是将属性定义为空数组,然后使用静态setter(如果您想静态使用类),或者实例化对象并在构造函数中填充数组