Suppose you are designing a class which you know will be routinely extended. The __construct method accepts several arguments. You know the extended classes will usually want to do some sort of custom initialization.

Is it better to:
1. Have the extended class override the constructor keeping in mind that you need to keep the constructor signature intact.
or
2. Have the base constructor call an init() method once it is complete. The extended class will then override init().
or
3. A different approach