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 [email protected] 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




Thread (34 messages)

« previous php.internals (#71910) next »