Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 类属性值中的常量_Php - Fatal编程技术网

Php 类属性值中的常量

Php 类属性值中的常量,php,Php,下面的代码演示了我希望在应用程序中使用的行为 class Test { private $var = constant . "suffix"; private $var2 = constant . "suffix2"; // ... private $var3 = constant2 . "suffix3"; private $var4 = constant2 . "suffix3"; // ... private $var5 = "som

下面的代码演示了我希望在应用程序中使用的行为

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
不需要前缀),还可能需要速度


所以我想知道是否有其他的,简洁的,方便的,或者稍微有点老套的方法来解决这种情况

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

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";
    }
}

如果将初始化移到类构造函数中,您可以按照您想要的方式初始化这些属性。这太棒了,我怎么没有看到这一点。我如何接受一条评论作为答案,我现在做的就是删除这个问题?不要删除它。我会补充一个简短的答案,你可以接受。我认为这是一个很好的问题,并且给出了答案,所以不要删除它。