rfc:propertygetsetsyntax
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
rfc:propertygetsetsyntax [2010/11/14 02:07] – Added a semicolon to the "alternative syntax", as suggested by Kalle Nielsen lieutenantclone | rfc:propertygetsetsyntax [2017/09/22 13:28] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 199: | Line 199: | ||
In this syntax, a semi-colon exists at the end of the property definition. | In this syntax, a semi-colon exists at the end of the property definition. | ||
+ | |||
+ | **__Alternative Syntax Suggested By jbondc__** | ||
+ | |||
+ | <code php> | ||
+ | property Hours { | ||
+ | get { return $this-> | ||
+ | set { $this-> | ||
+ | } | ||
+ | |||
+ | class TimePeriod | ||
+ | { | ||
+ | private $seconds; | ||
+ | |||
+ | public [Hours] $hours; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | This syntax would favor re-use similar to traits by injecting the set/get code. | ||
+ | |||
+ | The implementation would add the keywords ' | ||
+ | |||
+ | A read-only property could be defined in the following ways: | ||
+ | |||
+ | <code php> | ||
+ | // Spl property | ||
+ | property readonly | ||
+ | final set { throw Exception(__PROPERTY__ . " is read-only." | ||
+ | } | ||
+ | |||
+ | // Read-only property #1 | ||
+ | property MyHours1 extends Hours { | ||
+ | use readonly; | ||
+ | } | ||
+ | |||
+ | // Read-only property #2 | ||
+ | property MyHours2 extends Hours { | ||
+ | set { throw Exception(__PROPERTY__ . " is read-only." | ||
+ | } | ||
+ | |||
+ | // Read-only property #3 (if you don't want an exception) | ||
+ | property MyHours3 extends Hours { | ||
+ | set { trigger_error(__PROPERTY__ . " is read-only.", | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Another approach, to reserve the ' | ||
+ | |||
+ | <code php> | ||
+ | // property as some kind of trait | ||
+ | class TimePeriod | ||
+ | { | ||
+ | private $seconds; | ||
+ | |||
+ | public {use Hours;} $hours; | ||
+ | } | ||
+ | </ | ||
==== Read-Only And Write-Only Properties ==== | ==== Read-Only And Write-Only Properties ==== | ||
Line 218: | Line 274: | ||
public property Minutes | public property Minutes | ||
{ | { | ||
- | set { $this->minutes | + | set { $this->seconds |
} | } | ||
}; | }; | ||
Line 448: | Line 504: | ||
echo TimePeriod:: | echo TimePeriod:: | ||
</ | </ | ||
+ | |||
+ | ===== Implementation ===== | ||
+ | |||
+ | An implementation of this proposal is being worked on by Clint Priest <phpdev at zerocue dot com> | ||
===== References ===== | ===== References ===== | ||
Line 461: | Line 521: | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
===== Changelog ===== | ===== Changelog ===== | ||
Line 476: | Line 540: | ||
- 2010-11-13 Dennis Robinson: Added a note below the basic syntax about new keywords being created. | - 2010-11-13 Dennis Robinson: Added a note below the basic syntax about new keywords being created. | ||
- 2010-11-13 Dennis Robinson: Added a semicolon to the " | - 2010-11-13 Dennis Robinson: Added a semicolon to the " | ||
+ | - 2010-11-29 jbondc: Added another alternative syntax | ||
+ | - 2010-12-01 Dennis Robinson: Added additional links in the " | ||
+ | - 2011-12-22 Dennis Robinson: Added " |
rfc/propertygetsetsyntax.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1