我可以使用至少两种基本方法从子类访问受保护的类方法:
parent::myMethod();
$this->myMethod();
如果我不需要在子类中覆盖它,在这种情况下我必须这样做:
function myMethod() {
...
parent::myMethod();
...
}
哪个是最推荐的调用方式?我个人觉得使用parent::myMethod()而不是$this->myMethod更舒服,因为第一个立即告诉我这个方法是被继承的。但我不确定在性能和最佳实践方面采用哪种方式。
编辑:
检查这个,这是我的问题的真实情况。它使用 CodeIgniter,但即使你不熟悉它,你也可能会得到它:
class Admin_Controller extends CI_Controller {
protected function validate_form($validation) {
$this->load->library('form_validation');
// This will validate the form sent against the validation rules group specified in $validation
if ($this->form_validation->run($validation) == false) {
throw new Exception('There are errors in the form');
}
}
}
class Articles extends Admin_Controller {
function save($id) {
$this->validate_form(strtolower(get_class($this));
// OR
parent::validate_form(strtolower(get_class($this));
// Other actions
....
}
}
class Login extends Admin_Controller {
function signIn() {
$this->validate_form(strtolower(get_class($this));
// OR
parent::validate_form(strtolower(get_class($this));
// Other actions
....
}
}