【发布时间】:2013-04-14 19:05:16
【问题描述】:
我正在寻找将一组属性(配置)应用到新创建的实例的最有效方法。我的第一个目标是保持应用程序面向对象,第二个目标是使用 DI 容器的能力。这是我到目前为止提出的一个示例:
class ViewLogin {
public $msgLoginGranted;
public $msgLoginFailed;
public function __construct(){
}
protected function onSuccess() {
return $this->msgLoginGranted;
}
protected function onFailure() {
return $this->msgLoginFailed;
}
}
class ControllerLogin {
public function __construct(ModelLogin $model, ViewLogin $view) {
}
}
为了保持 ViewLogin 干净,并将配置数据与代码分开,最好的做法是:
创建一个新类 ViewLogin1
class ViewLogin1 extends ViewLogin {
public function __construct() {
$this->msgLoginGranted = 'Welcome!';
$this->msgLoginFailed = 'Login Failed!';
}
}
缺点:静态类内容,没有新功能,污染类空间
将配置对象传递给 ViewLogin
class ViewLogin {
public function __construct(Config1 $config) {
$this->msgLoginGranted = $config->msgLoginGranted;
$this->msgLoginFailed = $config->msgLoginFailed;
}
}
为 ViewLogin 创建一个装饰器?
将配置移至 XML/JSON/YAML...
【问题讨论】:
标签: php static-methods