rfc:propertygetsetsyntax

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:propertygetsetsyntax [2010/11/29 14:15] – added alternative syntax #2 jbondcrfc:propertygetsetsyntax [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 179: Line 179:
 Note that "get" and "set" as seen above would become new keywords.  Alternatively, "get" and "set" could be made to only have meaning if they are in a prototype, similar to the current type hinting syntax that exists in php-trunk. Note that "get" and "set" as seen above would become new keywords.  Alternatively, "get" and "set" could be made to only have meaning if they are in a prototype, similar to the current type hinting syntax that exists in php-trunk.
  
-**__Alternative Syntax__ #1 **+**__Alternative Syntax__**
  
 The syntax above attempts to match the syntax of C# properties, as well as PHP method declarations as much as possible.  An alternative syntax could look like the following: The syntax above attempts to match the syntax of C# properties, as well as PHP method declarations as much as possible.  An alternative syntax could look like the following:
Line 200: Line 200:
 In this syntax, a semi-colon exists at the end of the property definition.  This was suggested by Kalle Nielsen, as it would be simpler to implement into the current implementation of class members in the PHP interpreter. In this syntax, a semi-colon exists at the end of the property definition.  This was suggested by Kalle Nielsen, as it would be simpler to implement into the current implementation of class members in the PHP interpreter.
  
-**__Alternative Syntax__ #2 **+**__Alternative Syntax Suggested By jbondc__**
  
 <code php> <code php>
Line 225: Line 225:
 // Spl property // Spl property
 property readonly  { property readonly  {
-    set { throw Exception(__PROPERTY__ . " is read-only."); }+    final set { throw Exception(__PROPERTY__ . " is read-only."); }
 } }
  
Line 252: Line 252:
     private $seconds;     private $seconds;
  
-    public {use Hours} $hours;+    public {use Hours;} $hours;
 } }
 </code> </code>
Line 274: Line 274:
     public property Minutes     public property Minutes
     {     {
-        set { $this->minutes = $value * 60; }+        set { $this->seconds = $value * 60; }
     }     }
 }; };
Line 504: Line 504:
 echo TimePeriod::$Hours;// Outputs 12 echo TimePeriod::$Hours;// Outputs 12
 </code> </code>
 +
 +===== Implementation =====
 +
 +An implementation of this proposal is being worked on by Clint Priest <phpdev at zerocue dot com> Information about implementation details can be found here: https://wiki.php.net/rfc/propertygetsetsyntax-as-implemented
  
 ===== References ===== ===== References =====
Line 517: Line 521:
   * [[http://msdn.microsoft.com/en-us/library/x9fsa0sw%28VS.80%29.aspx|Properties (C# Programming Guide)]]   * [[http://msdn.microsoft.com/en-us/library/x9fsa0sw%28VS.80%29.aspx|Properties (C# Programming Guide)]]
   * [[http://msdn.microsoft.com/en-us/library/75e8y5dd%28VS.80%29.aspx|Asymmetric Accessor Accessibility (C# Programming Guide)]]   * [[http://msdn.microsoft.com/en-us/library/75e8y5dd%28VS.80%29.aspx|Asymmetric Accessor Accessibility (C# Programming Guide)]]
 +  * [[http://msdn.microsoft.com/en-us/library/ms229054.aspx|Choosing Between Properties and Methods (MSDN)]]
 +  * [[http://msdn.microsoft.com/en-us/library/ms229006.aspx|Property Design (MSDN)]]
 +  * [[http://c2.com/cgi/wiki?UniformAccessPrinciple|Uniform Access Principle (C2 wiki)]]
 +  * [[http://en.wikipedia.org/wiki/Uniform_access_principle|Uniform Access Principle (Wikipedia)]]
  
 ===== Changelog ===== ===== Changelog =====
Line 532: 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 "alternative syntax", as suggested by Kalle Nielsen.   - 2010-11-13 Dennis Robinson: Added a semicolon to the "alternative syntax", as suggested by Kalle Nielsen.
 +  - 2010-11-29 jbondc: Added another alternative syntax 
 +  - 2010-12-01 Dennis Robinson: Added additional links in the "Further Reading" section 
 +  - 2011-12-22 Dennis Robinson: Added "Implementation" section
rfc/propertygetsetsyntax.1291040103.txt.gz · Last modified: 2017/09/22 13:28 (external edit)