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
rfc:class_properties_initialization [2010/07/30 10:14] k.antczakrfc:class_properties_initialization [2017/09/22 13:28] (current) – external edit 127.0.0.1
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.1280484856.txt.gz · Last modified: 2017/09/22 13:28 (external edit)