rfc:horizontalreuse

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
rfc:horizontalreuse [2011/01/03 10:30]
gron and bumped up version number +0.1 for property definition
rfc:horizontalreuse [2017/09/22 13:28] (current)
Line 1: Line 1:
 ====== Request for Comments: Horizontal Reuse for PHP ====== ====== Request for Comments: Horizontal Reuse for PHP ======
-  * Version: 2.1.0 +  * Version: 2.1.1 
-  * Date: 2008-10-12, last update ​2010-12-21+  * Date: 2008-10-12, last update ​2011-01-09
   * Author: Stefan Marr <​php.at.stefan-marr.de>​   * Author: Stefan Marr <​php.at.stefan-marr.de>​
-  * Status: ​Committed to trunk (traits only)+  * Status: ​Implemented in PHP 5.4 (traits only)
   * First Patch: http://​www.stefan-marr.de/​2009/​09/​traits-patch-updated-backported-and-available-on-github/​   * First Patch: http://​www.stefan-marr.de/​2009/​09/​traits-patch-updated-backported-and-available-on-github/​
   * First Published at: http://​www.stefan-marr.de/​artikel/​rfc-horizontal-reuse-for-php.html   * First Published at: http://​www.stefan-marr.de/​artikel/​rfc-horizontal-reuse-for-php.html
Line 350: Line 350:
 ==== Traits Composed from Traits ==== ==== Traits Composed from Traits ====
  
-Not explicitly mentioned ​jet, but implied by the flattening property is the+Not explicitly mentioned ​yet, but implied by the flattening property is the
 composition of Traits from Traits. composition of Traits from Traits.
 Since Traits are fully flattened away at compile time it is possible to use Since Traits are fully flattened away at compile time it is possible to use
Line 519: Line 519:
 Traits do not provide any provisioning for handling state. Traits do not provide any provisioning for handling state.
 They are meant to provide a light-weight mechanism for flexible code reuse, They are meant to provide a light-weight mechanism for flexible code reuse,
-with the mean goal being to avoid code duplication. +with the main goal being to avoid code duplication. 
-Moreover, should not be confused with typical use cases of classes.+Moreover, ​traits ​should not be confused with typical use cases of classes.
 When a strong coherence/​coupling between methods and state is required, When a strong coherence/​coupling between methods and state is required,
-and certain ​invariants have to be maintained on the state, this is a good +and invariants have to be maintained on the state, this is a good 
 indication that a class is the right abstraction to implement that problem ​ indication that a class is the right abstraction to implement that problem ​
 with. with.
Line 551: Line 551:
  
  
 +===== Reflection =====
 +
 +Status: The Reflection API is not completely adapted for traits yet.
 +
 +The following functions are added to match the existing class- or interface-specific functions. ​
 +  * trait_exists() ​ -- returns true for traits, false for all kind of classes and interfaces
 +  * get_declared_traits() ​ -- returns the defined traits, no classes or interfaces
  
 ====== Grafts - Class Composition (not implemented) ====== ====== Grafts - Class Composition (not implemented) ======
rfc/horizontalreuse.1294050638.txt.gz · Last modified: 2017/09/22 13:28 (external edit)