rfc:readonly_properties

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rfc:readonly_properties [2014/10/23 23:58] – Fixed size/length issue ajfrfc:readonly_properties [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== PHP RFC: Readonly Properties ====== ====== PHP RFC: Readonly Properties ======
-  * Version: 0.1 +  * Version: 0.1.1 
-  * Date: 2014-10-24+  * Date: 2014-10-24 (Withdrawn 2014-11-03)
   * Author: Andrea Faulds, ajf@ajf.me   * Author: Andrea Faulds, ajf@ajf.me
-  * Status: Under Dicussion+  * Status: Withdrawn 
 +  * Discussion: http://markmail.org/message/7l3ci3sboma2nlzq
   * First Published at: http://wiki.php.net/rfc/readonly_properties   * First Published at: http://wiki.php.net/rfc/readonly_properties
  
 ===== Introduction ===== ===== Introduction =====
  
-There is currently no way to make a property readable to everyone and writeable only to the containing object, with PHP's visibility specifiers allowing all of nothing: a scope can either read or write, or do neither. While ''_''''_get'' and ''_''''_set'' exist, these do not actually allow control of the same property, merely only exposing a separate property, and they are only usable for undeclared properties, which cannot be reflected and are not performant.+There is currently no way to make a property readable to everyone and writeable only to the containing object, with PHP's visibility specifiers allowing all or nothing: a scope can either both read and write, or do neither. While ''_''''_get'' and ''_''''_set'' exist, these do not actually allow control of the same property, merely only exposing a separate property, and they are only usable for undeclared properties, which cannot be reflected and are not performant.
  
 Because of this, getter and setter functions to control the ability to write to properties are common. This requires developers to write boilerplate code, even if assisted by IDEs, and is not as performant as a raw property. Because of this, getter and setter functions to control the ability to write to properties are common. This requires developers to write boilerplate code, even if assisted by IDEs, and is not as performant as a raw property.
Line 54: Line 55:
 This is proposed for the next major version of PHP, currently PHP 7. This is proposed for the next major version of PHP, currently PHP 7.
  
 +===== Future Scope =====
 +
 +Properties in interfaces are currently not supported. If they were later to be supported (perhaps with getters/setters being added), ''readonly'' could be used to avoid compelling implementing classes from making a property writeable, but not preventing them from expanding the interface to do so, e.g.:
 +
 +<code php>
 +interface Point {
 +    readonly $x, $y;
 +}
 +
 +class ImmutablePoint implements Point {
 +    public readonly $x, $y;
 +    ...
 +}
 +
 +class MutablePoint implements Point {
 +    public $x, $y;
 +    ...
 +}
 +</code>
  
 ===== RFC Impact ===== ===== RFC Impact =====
Line 97: Line 117:
  
 ===== Changelog ===== ===== Changelog =====
 +   
 +  * v0.1.1 - Added Future Scope
   * v0.1 - Creatd   * v0.1 - Creatd
rfc/readonly_properties.1414108680.txt.gz · Last modified: 2017/09/22 13:28 (external edit)