Question

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!

Was it helpful?

Solution

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 the preExecute() declaration to prevent accidental overrides.

OTHER TIPS

There is no way to enforce it. It is the sole responsibility of the child class to decide whether or not to call the parent method.

put it in the abstract class __constructor()

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top