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
rfc:lsb_parentself_forwarding [2008/07/23 13:58] – add some stuff colderrfc:lsb_parentself_forwarding [2017/09/22 13:28] (current) – external edit 127.0.0.1
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