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:22] 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? ====
  
-  * **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 httpRequest $var7 = getRequest ();+    private $var1 time (); 
 +     
 +    private httpRequest $var2 = getRequest ();
 } }
 </code> </code>
Line 37: Line 82:
  
 <code php> <code php>
-private $foo = $this -> someStuff(); // impossible/to weird (?)+private $foo = $this -> someStuff(); // impossible/nonsense (?)
 </code> </code>
  
rfc/class_properties_initialization.1280485374.txt.gz · Last modified: 2017/09/22 13:28 (external edit)