Re: [VOTE] Automatic Property Initialization

From: Date: Fri, 31 Jan 2014 23:57:41 +0000
Subject: Re: [VOTE] Automatic Property Initialization
References: 1 2 3 4 5  Groups: php.internals 
Request: Send a blank email to internals+get-71910@lists.php.net to get a copy of this message
On Fri, 2014-01-31 at 23:48 +0000, Dan Ackroyd wrote: > Hi Johannes, > > Johannes wrote: > > from a quick look at it there seems to be a design flaw > > around inheritance with code like this: > > That example is equivalent to calling the parent constuctor like this: > > class Base { > public $p; > > function __construct($this->p = 42); > } > > Class E extends Base { > function __construct($value) { > $this->p = $value; > parent::__construct(); > } > } > > So yes - you need will still need to pass parameters to a parent > constructor that requires them, but that is the same as the current > situation. Right. Still one should be aware of this and might be worth adding to RFC. "Correct" usage would of course be be passing parameters through explicitly. > Johannes wrote: > > also > > class C { public function m($foo->prop){}} > > becomes valid syntax > > Nope, it's constructors only. From the patch, the following errors can > be triggered: > > "Automatic property initialization can only be used inside a class" > "Automatic property initialization can only be used in a constructor" > "Automatic property initialization can not be used in an abstract method" > > If you try to use the syntax outside of a constructor function. As said - just had a quick look and didn't think much. if those are triggered during compilation (which would be obvious as only the compiler is changed ...) then its fine. Thanks for reviewing! johannes

« previous php.internals (#71910) next »