rfc:lsb_parentself_forwarding

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
rfc:lsb_parentself_forwarding [2008/07/23 13:58] – add some stuff colderrfc:lsb_parentself_forwarding [2013/10/29 17:30] – -> Implemented nikic
Line 3: Line 3:
   * Date: 2008-07-22   * Date: 2008-07-22
   * Author: Etienne Kneuss <colder@php.net>   * Author: Etienne Kneuss <colder@php.net>
-  * Status: Accepted+  * Status: Implemented in PHP 5.3
  
 ===== Introduction ===== ===== Introduction =====
  
-This RFC covers the change that occured to Late Static Bindings (LSB) prior to it'first alpha release.+This RFC covers the change that occured to Late Static Bindings (LSB) prior to its first alpha release.
  
 ==== Terms and concepts ==== ==== 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.+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.
 <code php> <code php>
 <?php <?php
Line 52: Line 52:
 </code> </code>
  
-Now, depending on how you call A's who() from B::who(), you might get different results for the c::who() call:+Now, depending on how you call A'''who()'' from ''B::who()'', you might get different results for the ''C::who()'' call:
   - C, if the call was ''forwarding''   - C, if the call was ''forwarding''
   - A, if the call wasn't ''forwarding''.   - A, if the call wasn't ''forwarding''.
Line 58: Line 58:
 ===== The change ===== ===== 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()''.+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.+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 <nameoftheclass>:: won't.+Note that ''self::'' will also be made to be ''forwarding'', while ''<nameoftheclass>::'' won't.
  
 ===== ML Discussion ===== ===== ML Discussion =====
rfc/lsb_parentself_forwarding.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1