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