Bug #74269 [Opn]: It's possible to override trait property with different value
| From: | bugsphp077 at nabialek dot org | Date: | Sat, 18 Mar 2017 21:00:41 +0000 |
| Subject: | Bug #74269 [Opn]: It's possible to override trait property with different value | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-207925@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=74269&edit=1
ID: 74269
User updated by: bugsphp077 at nabialek dot org
Reported by: bugsphp077 at nabialek dot org
Summary: It's possible to override trait property with
different value
Status: Open
Type: Bug
Package: Class/Object related
-Operating System: Windows
+Operating System: Linux/Windows
PHP Version: 7.0.17
Block user comment: N
Private report: N
New Comment:
In fact it's for both Linux and Windows
Previous Comments:
------------------------------------------------------------------------
[2017-03-18 20:58:24] bugsphp077 at nabialek dot org
Description:
------------
According to PHP manual:
"If a trait defines a property then a class can not define a property with the same name unless
it is compatible (same visibility and initial value), otherwise a fatal error is issued. Before PHP
7.0.0, defining a property in the class with the same visibility and initial value as in the trait,
raised an E_STRICT notice. "
but it seems it's not completely true. Some casts are done, so in fact you can use different
value.
Test script:
---------------
trait PropertiesTrait
{
public $same = true;
public function message()
{
if ($this->same === true) {
return "A";
}
return "B";
}
}
class PropertiesExample
{
use PropertiesTrait;
public $same = 2;
}
$example = new PropertiesExample();
echo $example->message();
Expected result:
----------------
Fatal error as described in documentation.
Actual result:
--------------
B (Same result is for PHP 7.1.1). No warning/notice is generated
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=74269&edit=1