rfc:readonly_properties_v2
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
rfc:readonly_properties_v2 [2021/06/04 16:15] – nikic | rfc:readonly_properties_v2 [2021/07/01 10:16] – nikic | ||
---|---|---|---|
Line 2: | Line 2: | ||
* Date: 2021-06-02 | * Date: 2021-06-02 | ||
* Author: Nikita Popov < | * Author: Nikita Popov < | ||
- | * Status: | + | * Status: |
* Target Version: PHP 8.1 | * Target Version: PHP 8.1 | ||
* Implementation: | * Implementation: | ||
Line 77: | Line 77: | ||
class Test { | class Test { | ||
public function __construct( | public function __construct( | ||
- | public readonly int $prop = 0, | + | public readonly int $i = 0, |
+ | public readonly array $ary = [], | ||
) {} | ) {} | ||
} | } | ||
$test = new Test; | $test = new Test; | ||
- | $test->prop += 1; | + | $test->i += 1; |
- | $test->prop++; | + | $test->i++; |
- | ++$test-> | + | ++$test-> |
- | $ref =& $test->prop; | + | $test-> |
- | $test->prop =& $ref; | + | $test-> |
- | byRef($test-> | + | $ref =& $test->i; |
+ | $test->i =& $ref; | ||
+ | byRef($test-> | ||
foreach ($test as & | foreach ($test as & | ||
</ | </ | ||
Line 261: | Line 264: | ||
'' | '' | ||
+ | |||
+ | Similarly, closure rebinding can be used to bypass the initialization scope requirement. | ||
+ | |||
+ | ==== Serialization ==== | ||
+ | |||
+ | Readonly properties have no impact on serialization. As '' | ||
+ | |||
+ | This also applies to userland serializers and hydrators. As long as the object is created using '' | ||
===== Rationale ===== | ===== Rationale ===== | ||
Line 331: | Line 342: | ||
===== Vote ===== | ===== Vote ===== | ||
- | Yes/No. | + | Voting started on 2021-07-01 and closes on 2021-07-15. |
+ | |||
+ | <doodle title=" | ||
+ | | ||
+ | | ||
+ | </ | ||
rfc/readonly_properties_v2.txt · Last modified: 2021/07/20 15:37 by nikic