Bug #62156 [Com]: Documentation incorrectly states that traits can't define static properties.
| From: | guillaumemessier at gmail dot com | Date: | Sat, 22 Dec 2012 21:17:44 +0000 |
| Subject: | Bug #62156 [Com]: Documentation incorrectly states that traits can't define static properties. | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-9309@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=62156&edit=1
ID: 62156
Comment by: guillaumemessier at gmail dot com
Reported by: phplists at stanvassilev dot com
Summary: Documentation incorrectly states that traits can't
define static properties.
Status: Open
Type: Bug
Package: Documentation problem
Operating System: -
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
Php 5.4 seems to allow the definition of a static variable in a trait. It seems that a static
variable is created for the trait itself and one for each class using the trait.
<?php
trait T {
static public $var = 1;
}
class A {
use T;
}
class B {
use T;
}
var_dump(T::$var);
T::$var = 2;
var_dump(A::$var);
A::$var = 3;
var_dump(B::$var);
B::$var = 4;
var_dump(T::$var);
var_dump(A::$var);
var_dump(B::$var);
?>
Return:
int(1)
int(1)
int(1)
int(2)
int(3)
int(4)
Previous Comments:
------------------------------------------------------------------------
[2012-05-25 11:45:36] phplists at stanvassilev dot com
Description:
------------
The Traits page at http://us.php.net/manual/en/language.oop5.traits.php
states the
following:
"Static variables can be referred to in trait methods, but cannot be defined by
the trait. Traits can, however, define static methods for the exhibiting class."
This is followed by an example of emulating static properties with function-static
vars.
In testing PHP 5.4 this is wrong, traits support static properties, and they work
as expected...
Test script:
---------------
<?php
trait T {
static public $foo = 123;
}
class C {
use T;
}
echo C::$foo; // 123
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=62156&edit=1