Есть ли какой-либо (или шаблон) принудительный вызов родительского метода?
У меня есть абстрактный класс, такой как:
abstract class APrimitive{
public function validate(){
//Do some stuff that applies all classes that extend APrimitive
}
}
Тогда у меня есть классы, которые расширяются доAPrimitive "base":
class CSophisticated extends APrimitive{
public function validate(){
//First call the parent version:
parent::validate();
//Then do something more sophisticated here.
}
}
Проблема в том, что если мы вернемся к коду через несколько месяцев и создадим еще несколько классов, таких как CSophisticated, с помощью метода validate()
, существуетвероятность того, что мы можем забыть сделать вызов parent::validate()
в этом методе.
Обратите внимание, что некоторые CSophisticated классы могут не иметь метода validate()
, поэтому будет вызвана родительская версия.
Я понимаю, что можно просто вставить комментарий где-то, чтобы напомнить программисту, чтобы он вызывал parent::validate()
, но есть ли лучший способ?Возможно, было бы неплохо использовать автоматический способ создания исключения, если вызов parent::validate()
не был выполнен в методе validate()
.