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