PHP OO problem
Take the following example class Foo which defines a static method called X that statically calls another of it's method's called Y using self::Y() as follows.
Now lets say that Foo is part of a core library that we don't have commit access to and we want to make a modified version of the functionality via a sub-class of Foo called Bar which overrides the Y method as follows.
The problem
The Y method is only ever called via the self::Y statement in the X method, so when we call Bar::X() it's actually Foo::Y that executes, because X only ever executes within the context of Foo since we haven't overridden the X method with a definition in the Bar class.
The question
Is there a way to define a Bar::X method that calls Foo:X while maintaining the context of Bar (i.e. the value of self is "Bar" during execution of Foo::X?
Notes
This is a known limitation of PHP and they've tried to resolve it with Late Static Bindings, but unfortunately this doesn't work for me as the solution would require changing the call in Foo:X from self::Y() to static::Y(), but we don't have access to the Foo class.