以下代码说明了我想在我的应用程序中使用的行为。
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的方法来解决这种情况。
答案 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";
}
}