====== Request for Comments: LSB, parent::/self:: forwarding ====== * Version: 1.0 * Date: 2008-07-22 * Author: Etienne Kneuss * Status: Implemented in PHP 5.3 ===== Introduction ===== This RFC covers the change that occured to Late Static Bindings (LSB) prior to its first alpha release. ==== Terms and concepts ==== LSB works by passing the original call info to the function, used then by ''static::'' or get_called_class to get the original class name used. This information will only be useful in case a ''fallback'' occurs, which takes place when you call a static method that only exists in one of the parent classes. Now let's say that you want to overwrite who in B, but still rely on A's who(): Now, depending on how you call A's ''who()'' from ''B::who()'', you might get different results for the ''C::who()'' call: - C, if the call was ''forwarding'' - A, if the call wasn't ''forwarding''. ===== The change ===== Previously, ''A::who()'' and ''parent::who()'' would be ''non-forwarding''. The only way to call A's who() with ''forwarding'' was to use an helper function: ''forward_static_call()''. With the change, a difference between ''parent::'' and ''A::'' is introduced, that is: ''parent::'' is ''forwarding'' while ''A::'' isn't. Basically, explicit calls are ''non-forwarding'', but calls using keywords are. Note that ''self::'' will also be made to be ''forwarding'', while ''::'' won't. ===== ML Discussion ===== http://markmail.org/message/at3ypbykl6luwr6l