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:10] – first draft version 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]]
  
 ===== Introduction ===== ===== Introduction =====
Line 12: 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[[rfc:annotations]], [[rfc:returntypehint]] and [[rfc:enum]]+**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 64:
     private $var1 = new Bar();     private $var1 = new Bar();
  
-    private $var2 = function () /* some callback ? */ }+    private $var2 = Bar :: getInstance ()
 +
 +</code>
  
-    private $var3 = array ( 'foo' => function () { /some callback ? */ } );+initialization with functions
  
-    private httpRequest $var4 NULL;+<code php> 
 +class Foo 
 +
 +    private $var1 = time (); 
 +     
 +    private httpRequest $var2 getRequest ();
 } }
 +</code>
 +
 +===== Rejected initialization types =====
 +
 +<code php>
 +private $foo = $this -> someStuff(); // impossible/nonsense (?)
 </code> </code>
  
rfc/class_properties_initialization.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1