rfc:property_write_visibility
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:property_write_visibility [2020/06/29 14:10] – Adapt for feedback on syntax, propose alternative based on swift syntax andrerom | rfc:property_write_visibility [2020/07/02 20:30] – Add missing phpdoc to "before" example andrerom | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== PHP RFC: Property write/set visibility ====== | ====== PHP RFC: Property write/set visibility ====== | ||
- | * Version: 0.4.5 | + | * Version: 0.4.6 |
* Date: 2020-06-29 | * Date: 2020-06-29 | ||
* Author: André Rømcke < | * Author: André Rømcke < | ||
Line 18: | Line 18: | ||
<code php> | <code php> | ||
+ | /** | ||
+ | * @property-read int $id | ||
+ | * @property-read string $name | ||
+ | */ | ||
class User { | class User { | ||
private int $id; | private int $id; | ||
Line 91: | Line 95: | ||
===== Main differences to previous proposals ===== | ===== Main differences to previous proposals ===== | ||
- | This RFC is inspired by what was proposed on internals mailing list in "RFC Proposal - Attributes read/write visibility" | + | This RFC is inspired by what was proposed on internals mailing list in "RFC Proposal - Attributes read/write visibility" |
+ | |||
+ | In both cases the purpose is to provide for a wider set of use cases. | ||
==== Readonly ==== | ==== Readonly ==== | ||
Line 97: | Line 103: | ||
This RFC allows for among others semantics proposed in [[rfc: | This RFC allows for among others semantics proposed in [[rfc: | ||
+ | This RFC does however **not** introduce any native readonly keyword/ | ||
==== Immutability ==== | ==== Immutability ==== | ||
Line 134: | Line 141: | ||
| | ||
// Property is write-only in public and protected scope | // Property is write-only in public and protected scope | ||
- | private: | + | private: |
public function __construct(int $id, string $name) { | public function __construct(int $id, string $name) { | ||
Line 158: | Line 165: | ||
| | ||
// Property is write-only in public and protected scope | // Property is write-only in public and protected scope | ||
- | private public(set) string $newName; | + | private public(set) string $newPassword; |
public function __construct(int $id, string $name) { | public function __construct(int $id, string $name) { | ||
Line 172: | Line 179: | ||
==== References ==== | ==== References ==== | ||
- | |||
Attempting to pass a property value outside of allowed writable scope as a reference, results in an error. | Attempting to pass a property value outside of allowed writable scope as a reference, results in an error. | ||
Line 212: | Line 218: | ||
==== Why not a Readonly keyword/ | ==== Why not a Readonly keyword/ | ||
- | Several comments are pointing out that '' | + | Several comments are pointing out that '' |
- | Additionally | + | AS in, if the language don't have a concept for write/set property visibility, then we'll end up with having to introduce reflection api that are tied in to the keyword/ |
rfc/property_write_visibility.txt · Last modified: 2020/07/07 07:33 by andrerom