Ralph:

>From where I'm sitting, I can see a few sane alternatives (there may
be more, but here are the options I can see):

Option 1.  Remove signature checking from constructors all together.
(I don't care for this, but whatever).  Additionally, since it's not
enforced, perhaps an E_DEPRECATED or E_STRICT error should be raised
on definition, as it is superfluous...

Option 2.  Fix grandchild signature checking to be inline for how
signatures work with other methods.

Personally, I think option 2 is the better one.  I see it being odd
and inconsistent that all methods work one way, and constructors work
differently.  But that's just my feeling (and I know others disagree
there).

And please don't reduce the error level of a signature change (as it
would introduce even more inconsistency)...

Just my $0.02...

Anthony

On Wed, Nov 23, 2011 at 1:25 PM, Ralph Schindler
<ra...@ralphschindler.com> wrote:
> Internals:
>
> Time to summarize.
>
> It is clear to me that internals is divided on this issue.  I don't think
> it's a large enough issue to drag on, even when I disagree with it - both
> theoretically and in practice.
>
> For most OO developer, putting ctors as an abstract or in an interface would
> not happen anyway, so this does not affect them.
>
> ** The current change represents a minor break in BC, that should be noted
> in the manual. **
>
> Also, a decision needs to be made on what to do with grandchildren.  As I
> mentioned, the following produces no E_FATAL and no warnings:
>
>  abstract class A {  abstract public function __construct($a, $b); }
>  class B extends A { public function __construct($a, $b) {} }
>  class C extends B { public function __construct(ArrayObject $d) {}
>
> While this is correct behavior to me (ability for concrete to use its own
> ctor), using the *current logic* strict signature checking enforced from an
> abstract, then the above is also wrong.
>
> ** Can we decide what to do with that situation? **
>
> On 11/18/11 5:05 AM, Pierre Joye wrote:
>>
>> I strongly disagree, this encourages bad practices. We could however
>> reduce the error level to warning.
>
> I think this is a sufficient compromise- I don't see anything E_FATAL about
> a signature change in ctors (I actually see nothing wrong with it, but it's
> clear the community is divided there).
>
> ** Can we make that change? **
>
>
> Thanks,
> -ralph
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to