I have a similar structure like this:
Parent class
abstract class parentActions extends sfActions
{
// overloaded from sfActions
public function preExecute()
{
// do some stuff before every action
}
}
Child class
class someActions extends parentActions
{
public function preExecute()
{
// do some more stuff
parent::preExecute();
}
}
Now my question is: How can I enforce a call to parent::preExecute()
in the child method which overwrites it?
Is there maybe some other way in symfony I don't know yet (another method which doesn't overloading or something)?
The parent method needs to be called, or otherwise functionality is broken!
This is exactly what inheritance should do; the child specializes a method while retaining the pre and post conditions. This makes it possible to substitute a parent class with a child class.
Perhaps you could declare empty hooks in the parent class that get implemented in the child class and add
final
to thepreExecute()
declaration to prevent accidental overrides.