Attribute: readOnly and writeOnce Configuration
+ +
+ Attributes can be configured to be readOnly, stopping them from being modified by the end user, or writeOnce allowing them to only be set by the end user, but only once. This example demonstrates how to setup attributes for your class as readOnly or writeOnce attributes, and shows how their behavior differs when the end user attempts to set their values.
+
ReadOnly And WriteOnce
+ +Attribute supports the ability to configure attributes to be readOnly or writeOnce. readOnly attributes cannot be set by the end user, either through initial values passed to the constructor, or by invoking the set method. writeOnce attributes on the other hand, can be set by the user, but only once, either during initialization or through a call to set. Once a value is established for a writeOnce attribute, it cannot be reset to another value by the user.
Configuring ReadOnly And WriteOnce Attributes
+ +This example sets up a custom class, MyClass, with two attributes, foo and bar. foo is configured to be a readOnly attribute, and bar is configured to be a writeOnce attribute:
Attempting To Set Values
+ +We first attempt to set values for both attributes in the constructor (used to intialize the attributes) and see that only bar, the writeOnce attribute, gets set to the user provided value:
We then attempt to set values for both attributes again, using set, and see that niether of the values are modified:
Setting The State Of ReadOnly Values Internally
+ +Although the user cannot update the value of readOnly attributes, it maybe neccessary for the host object to update it's value internally. The example shows how this can be done, using the private _set property on the host:
