合并PHP静态数组

合并PHP静态数组,php,arrays,Php,Arrays,作为一种代码重用措施,我希望在创建新的静态数组时嵌入现有的静态数组。例如: public static $a = array(1, 2, 3); public static $b = array(4, 5, 6); public static $c = array_merge(self::$a, self::$b); 我宁愿键入$c=array\u merge(self:$a,self:$b)而不是键入$c=array(1,2,3,4,5,6) PHP不允许我使用array\u merge。如

作为一种代码重用措施,我希望在创建新的静态数组时嵌入现有的静态数组。例如:

public static $a = array(1, 2, 3);
public static $b = array(4, 5, 6);
public static $c = array_merge(self::$a, self::$b);
我宁愿键入$c=array\u merge(self:$a,self:$b)而不是键入$c=array(1,2,3,4,5,6)

PHP不允许我使用array\u merge。如何做到这一点?谢谢

试试这个:

public static function initVars() {
    self::$c = array_merge(self::$a,self::$b);
}

您可以在类定义之后立即调用
className::initVars()
——如果您使用的是自动加载程序,则此方法对于初始化(例如使用DB或Memcache包装类)特别有效。

然而,有趣的问题是,我真的想不出在什么情况下这种复杂性是必要的

我认为你必须有一些分析告诉你,这被调用了很多次,这不仅仅是在类定义中加入init的一个微优化。根据数组的大小,与在定义中手动合并数组相比,您真正获得了什么

就处理这些常量的方式而言,您似乎在与类常量混为一谈,因为如果您的代码更改$a或$b,那么计算的$c数组将不会反映更改

话虽如此,如果要创建大量的类实例,那么类常量的限制肯定会促使某些人使用静态变量

正如devil’s advocate,如果$c确实是一个派生数组,那么您可以在类中轻松地使用一个方法来访问合并数组:

protected getC() {
    return array_merge($this->$a, $this->$b);
}

如果静态变量有可能被更改,那就更安全了。

虽然这是一项大量的工作,但我决定将该类从纯静态变量和函数转换为实例化的类。从长远来看,这似乎是获得我所期待的好处的最佳方式


IE将静态变量转换为实例变量,定义在构造函数中发生。

我也将在函数中设置<代码> $a <代码>和<代码> $b/COD>。ThanksCorrect,无论变量是否为静态变量,初始化变量时都不能执行函数。如果你一定要这么做,用尼特的想法。