为什么这段代码不起作用?
final class Db
{
private static $data = [];
private function __construct()
{
self::$data['host'] = 'localhost';
self::$data['user'] = 'mysql';
self::$data['passw'] = 'mysql';
self::$data['db'] = '123';
}
public static function test()
{
var_dump(self::$data);
}
}
Db::test();
我在php.net上阅读官方文档,但一无所获。这是非常有趣的情况。
Pepmap modder的注释是正确的,你期望在静态对象上调用构造函数,而不是实例化(构造)。您可以重命名该方法并在调用测试方法之前显式调用它。我添加了一些代码,允许您通过传递参数来设置它。
静态变量很好。
final class Db
{
private static $data = [];
public static function initData($data = NULL) {
if ($data) {
self::$data = $data;
}
else {
self::$data['host'] = 'localhost';
self::$data['user'] = 'mysql';
self::$data['passw'] = 'mysql';
self::$data['db'] = '123';
}
}
public static function test() {
var_dump(self::$data);
}
}
Db::initData();
Db::test();