从另一个函数分配公共静态$ variable(不同的模式文件)

时间:2019-04-03 03:02:47

标签: php

我的班级文件中有这个变量,如下所示。

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;

1 个答案:

答案 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;
}