子クラスから保護されたクラス メソッドにアクセスするには、少なくとも 2 つの基本的な方法を使用できます。
parent::myMethod();
$this->myMethod();
子クラスでオーバーライドする必要がない場合は、次のようにする必要があります。
function myMethod() {
...
parent::myMethod();
...
}
それを呼び出す最も推奨される方法はどれですか? 個人的には、 $this->myMethodよりもparent::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
....
}
}