سؤال

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

نصائح أخرى

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()

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top