https://bugs.php.net/patch-display.php?bug=49526&patch=v2.2&revision=1323662103

This one addresses the read-only, write-only aspects.  Though they are not 
quite what the RFC specifies...

class TimePeriod {
   public $Hours {
      get { return 5; }
   }
}

$o = new TimePeriod();
$o->Hours = 4;

Results in:
Fatal error: Cannot set read-only property TimePeriod::$Hours, no setter 
defined. in %s on line %d

Likewise in the other direction for write-only properties.

The difficulty is that one could extend TimePeriod and define a setter.  This 
is what the RFC talks about when using a readonly keyword.  There presently 
isn't a readonly keyword defined, nor a writeonly.

Should we create a readonly/writeonly keyword, or would something along these 
lines be better/more flexible?

class TimePeriod {
   public $Hours {
      get { return 5; }
     private final set { }
   }
}

Creating (forcing the author to create) a private final setter which would not 
allow a set to occur and could not be over-ridden?

I've also added two tests for the read-only and write-only, as it exists in the 
above patch.

Pierre, with the new/updated RFC, should I gut the sections that I decided 
against (such as the several alternate syntaxes) or leave them in?

-Clint


Reply via email to