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

时间:2015-10-28 10:51:55

标签: php arrays pdo

我目前正在制作转换脚本。我有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用作数组值?

1 个答案:

答案 0 :(得分:3)

PHP docs

引用
  

属性声明[]可以包含初始化,但是这个初始化必须是一个常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能被评估

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