关于php:从另一个函数分配Public static $ variable(不同的模态文件)


Assign Public static $variable from another function (Different modal file)

本问题已经有最佳答案,请猛点这里访问。

我的类文件中有如下的变量。

1
2
3
4
5
public static $Whitelist = array(
        '10.10.10.1',
        '10.10.10.2',
        '10.10.10.5',
);

我正在尝试转换它,以便从数据库中获得列表,而不是像下面这样硬编码:

1
public static $Whitelist = IPWhitelist::getIPWhitelist();

但是,它返回一个错误,说明语法错误。我该怎么修?为什么我可以给它分配一个数组,而不是一个同时返回数组的函数?谢谢。

编辑:它实际上包含3个文件。我再解释一下。

文件1:(配置模式文件)

1
2
3
class Config{
    public static $Whitelist = IPWhitelist::getIPWhitelist();
}

文件2:(数据库模式文件)

1
2
3
4
5
6
7
class IPWhitelist{
    public function getIPWhitelist($type = 1){
           //some database code here

            return $array_total_ips;
        }
}

文件3:(主文件)

1
$ip_list = Config::$Whitelist;


静态属性遵循与const表达式相同的规则:必须可以在编译时计算表达式。函数调用不能:它们必须在运行时发生。

相反,您可以在getIPWhitelist函数中使用一个静态变量,使其仅从数据库获取一次:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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;
}