rfc:class_properties_initialization

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:class_properties_initialization [2010/07/30 10:14] k.antczakrfc:class_properties_initialization [2010/07/30 10:47] k.antczak
Line 5: Line 5:
   * Status: In Draft   * Status: In Draft
   * First Published at: http://wiki.php.net/rfc/class_properties_initialization   * First Published at: http://wiki.php.net/rfc/class_properties_initialization
-  * Related RFC: [[rfc:annotations]], [[rfc:returntypehint]], [[rfc:enum]]+  * Related RFC: [[rfc:annotations]], [[rfc:returntypehint]]
  
 ===== Introduction ===== ===== Introduction =====
Line 13: Line 13:
 ==== Why do we need it? ==== ==== Why do we need it? ====
  
-  * **annotations**+  * **code readability**
  
 ===== Proposal ===== ===== Proposal =====
  
-It's possible that this feature would be one of the best use with proposals+**Main idea** 
 + 
 +<code php> 
 +class Foo 
 +
 +    private $var1 = function () { /* some callback ? */ } 
 + 
 +    private $var2 = array ( 'foo' => function () { /* some callback ? */ } ); 
 + 
 +    private httpRequest $var3 = NULL; 
 +
 +</code> 
 + 
 +instead of: 
 + 
 +<code php> 
 +class Foo 
 +
 +    private $var1; 
 + 
 +    private $var2; 
 + 
 +    private $var3 = NULL; 
 + 
 +    public function __construct () 
 +    { 
 +        $this -> var1 = function () { /* some callback ? */ } 
 +         
 +        $this -> var2 = array ( 'foo' => function () { /* some callback ? */ } ); 
 + 
 +        if ( ( $request = SomeCore :: getRequest () ) instanceof httpRequest ) 
 +        { 
 +            $this -> var3 = $request; 
 +        } 
 +    } 
 +
 +</code> 
 + 
 +**Other / Related** 
 + 
 +* objects structures - structured objects initialization - like IoC/DI containers, where structure is not a result of code execution, but it's a result of strictly controlled design.
  
 <code php> <code php>
Line 23: Line 63:
 { {
     private $var1 = new Bar();     private $var1 = new Bar();
 +
     private $var2 = Bar :: getInstance ();     private $var2 = Bar :: getInstance ();
 +}
 +</code>
  
-    private $var3 = time (); +initialization with functions
-    +
-    private $var4 = function () { /some callback ? */ }+
  
-    private $var5 array ( 'foo' => function () { /* some callback ? */ } ); +<code php> 
- +class Foo 
-    private httpRequest $var6 NULL;+
 +    private $var1 time (); 
 +     
 +    private httpRequest $var2 getRequest ();
 } }
 </code> </code>
Line 37: Line 81:
 ===== Rejected initialization types ===== ===== Rejected initialization types =====
  
 +<code php> 
 +private $foo = $this -> someStuff(); // impossible/nonsense (?) 
 +</code>
  
 ===== Changelog ===== ===== Changelog =====
  
 2010-07-30 k.antczak Initial RFC creation. 2010-07-30 k.antczak Initial RFC creation.
rfc/class_properties_initialization.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1