我是OOP的新用户,请耐心等待我);如何使用依赖注入?
随时发表评论代码。
我有一个RegisterFormParameterHandler类,它扩展了FormParameterHandler。我正在使用它来为注册或登录用户验证$ _POST变量。类'通知'用于错误报告和日志。
我通过传递对象$ notice作为RegisterFormParameterHandler中构造函数的参数来获得代码。我应该在课堂通知中使用静态方法吗?
class notice {
private $_notice = array();
public function get_notice(){
return $this->_notice;
}
public function add($type, $message) {
$this->_notice[$type][] = $message;
}
}
和:
abstract class FormParameterHandler {
protected $parameters;
public function __construct($associative_array) {
$this->parameters = array();
foreach($associative_array as $key => $value) {
$this->{$key} = $value;
}
}
public function __get($key) {
$value = null;
if(method_exists($this, "get_$key")) {
$value = $this->{"get_$key"}();
} else {
$value = $this->parameters[$key];
}
return $value;
}
public function __set($key, $value) {
$value = addslashes($value);
$value = htmlentities($value);
if(method_exists($this, "set_$key")) {
$this->{"set_$key"}($value);
} else {
$this->parameters[$key] = $value;
}
}
和:
class RegisterFormParameterHandler extends FormParameterHandler {
protected $notice;
public function __construct($form_parameters, $notice, $tok_id, $captcha) {
parent::__construct($form_parameters);
$this->notice = $notice;
$args = func_get_args();
foreach($form_parameters as $key=>$value) {
$key = 'validate_'.$key;
$this->$key($args);
}
}
public function validate_something($args) {
if(something === true) {
$this->notice->add('error', 'Error message');
}
}
}
这是我如何传递的$ arg的方法validate_something或者是有办法做到这一点以正确的方式一个构造函数?
类通知在类RegisterFormParameterHandler之前使用自动加载器实例化。
$notice = new notice();
.....
$reg = new RegisterFormParameterHandler($_POST, $notice, $tok_id, $captcha);
因此,类通知allready包含一些错误消息,并在调用此类之后使用。
在类RegisterFormParameterHandler中有没有更好的方法来使用类通知?
我不知道在哪里的静态方法来为你的问题,但使用依赖注入你的通知对象放入RegisterFormParameterHandler类是很好的做法;尽管您可能希望使RegisterFormParameterHandler中的$ notice属性受保护,而不是公开 – 2013-02-14 00:22:50