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:20] 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? ====
  
-  * **objects structures** - structured objects initialization+  * **code readability**
  
 ===== Proposal ===== ===== Proposal =====
 +
 +**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 21: 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 35: 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