我的班级文件中有这个变量,如下所示。
public static $Whitelist = array(
'10.10.10.1',
'10.10.10.2',
'10.10.10.5',
);
我正在尝试对其进行转换,以便可以从数据库中获取列表,而不是如下所示的硬编码:
public static $Whitelist = IPWhitelist::getIPWhitelist();
但是,它返回一个错误,指出语法错误。我如何解决它?我怎么能给它分配一个数组,却又不能返回一个数组呢?谢谢。
编辑: 它实际上包含3个文件。.让我解释更多。
文件1 :(配置模式文件)
class Config{
public static $Whitelist = IPWhitelist::getIPWhitelist();
}
文件2 :(数据库模式文件)
class IPWhitelist{
public function getIPWhitelist($type = 1){
//some database code here
return $array_total_ips;
}
}
文件3 :(主文件)
$ip_list = Config::$Whitelist;
答案 0 :(得分:2)
Static properties遵循与const
表达式相同的规则:必须可以在编译时评估表达式。函数调用不能:它们必须在运行时发生。
您可以在getIPWhitelist
函数中使用static variable使其仅从数据库中获取一次:
function getIPWhitelist()
{
static $list = null;
if(!$list) {
// fetch from the database here (only executed once)
$list = [
'10.10.10.1',
'10.10.10.2',
'10.10.10.5',
];
}
return $list;
}