类属性值中的常量

时间:2016-06-11 18:32:10

标签: php

以下代码说明了我想在我的应用程序中使用的行为。

class Test {
    private $var = constant . "suffix";
    private $var2 = constant . "suffix2";
    // ...
    private $var3 = constant2 . "suffix3";
    private $var4 = constant2 . "suffix3";
    // ...
    private $var5 = "something else";
}

我有几个属性都有一个共同的开头,一个前缀。因此,为了使整个应用程序配置更容易控制该前缀,或者我应该说它可以更加集中化,以防它需要更改,最好只定义一次。就像一个恒定的,理想的。

但是,以这种方式使用常量是无效的语法。

我能想到的唯一解决方法(ish)是遍历构造函数中foreach循环中的所有属性,并为它们添加前缀。缺点是它需要更多的变量来跟踪哪些属性需要哪个前缀,或者根本不需要任何前缀(在我的示例中$var4不需要一个),并且可能需要速度。

所以我想知道是否有任何其他的,整洁的,方便的或稍微有点hacky的方法来解决这种情况。

1 个答案:

答案 0 :(得分:3)

如果将初始化移动到类构造函数中,您可以按照您希望的方式初始化这些属性:

class Test {
    private $var;
    private $var2;
    // ...
    private $var3;
    private $var4;
    // ...
    private $var5;

    public function __construct() {
        $this->var = constant . "suffix";
        $this->var2 = constant . "suffix2";
        // ...
        $this->var3 = constant2 . "suffix3";
        $this->var4 = constant2 . "suffix3";
        // ...
        $this->var5 = "something else";
    }
}