Strategy for rewriting classes

After having a look at your problem with this very basic class inheritance diagram (sorry for the bad drawing, by the way), I say it's better to continue with the approach you have taken and create Custom_Class_B extends Core_Class_B.

inheritance

With regards to this drawing, it seems obvious to me that you will miss the extended functionality from Core_Class_B in version 1 (V1) and you would need to copy this functionality from the Core, which is not a good approach.

V2 is more transparent in this case.


First, you should never chose an approach where you need to copy methods of another class, if you have other choices. As soon as they change, you will get update problems and a log of work.

Extending them and implement your own method again is the better choice. Clearly you should not copy here again. Using an observer is a good way to avoid code duplication here, another would be the use of the PHP TRAIT Feature, which allows sharing code between classes.