Doc #62537 [Com]: Composed class has fatal error with duplicate, equal array properties

From: Date: Thu, 13 Jul 2017 13:43:28 +0000
Subject: Doc #62537 [Com]: Composed class has fatal error with duplicate, equal array properties
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-14834@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=62537&edit=1

 ID:                 62537
 Comment by:         walle dot sthlm at gmail dot com
 Reported by:        jeremeamia at gmail dot com
 Summary:            Composed class has fatal error with duplicate, equal
                     array properties
 Status:             Verified
 Type:               Documentation Problem
 Package:            Class/Object related
 Operating System:   *
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

The following snippet results in the "definition differs and is considered incompatible"
fatal error in 7.0+. Can this be considered as a bug? 

const VALUE = true;

trait Foo {public $var = VALUE;}
trait Bar {public $var = VALUE;}
class Baz {use Foo, Bar;}

https://3v4l.org/kkHFe


Previous Comments:
------------------------------------------------------------------------
[2017-03-13 18:34:56] tularis@php.net

Automatic comment from SVN on behalf of tularis
Revision: http://svn.php.net/viewvc/?view=revision&revision=342111
Log: Documents the issue described in bug 62537.

--
Provided by Pedro Magalhães (mail@pmmaga.net)

------------------------------------------------------------------------
[2017-02-09 17:40:36] mail at pmmaga dot net

I've included a patch for the documentation on this ticket as well.

------------------------------------------------------------------------
[2017-02-07 23:45:09] requinix@php.net

The documentation is indeed out of date.

No E_STRICT in PHP 7:
- https://3v4l.org/Jafoi matching in two traits
- https://3v4l.org/pQYTl matching in traits and class

Conflicting definitions:
- https://3v4l.org/brZt0 conflict between traits
- https://3v4l.org/umfVE conflict between trait and class

------------------------------------------------------------------------
[2017-02-07 23:09:12] mail at pmmaga dot net

In PHP7.0, this E_STRICT was dropped as described in the 7.0 docs: http://php.net/manual/en/migration70.incompatible.php

> Same (compatible) property in two used traits	- Notice removed, triggers no error

However, the documentation on traits still mentions the E_STRICT.

------------------------------------------------------------------------
[2013-09-19 09:10:51] gron@php.net

I believe this is going to be problematic, because the object/array is not the 
same, i.e., it is not the same literal, and I assume that I currently check for 
object identity. Object identity works for most literals, but not arrays.

To fix this, special care is required. A value comparison might be possible, and 
would be necessary here. A simple check for the type is not sufficient, because 
$var = 1; vs $var = 2; should result in the expected error.

But yes, in general, I consider this behavior a bug.

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=62537


--
Edit this bug report at https://bugs.php.net/bug.php?id=62537&edit=1


Thread (5 messages)

« previous php.doc.bugs (#14834) next »