Edit report at https://bugs.php.net/bug.php?id=49526&edit=1
ID: 49526 Comment by: re...@php.net Reported by: president at basnetworks dot net Summary: C# style property get/set syntax Status: Open Type: Feature/Change Request Package: Scripting Engine problem Operating System: * PHP Version: * Block user comment: N Private report: N New Comment: @see https://wiki.php.net/rfc/propertygetsetsyntax-v1.2 this RFC failed to win the vote sadly. Previous Comments: ------------------------------------------------------------------------ [2013-01-09 01:36:22] anka17pinky at yahoo dot com I wish this request was implemented in PHP 5.5 :( There are so many questions on SO asking for ways to implement readonly properties in PHP... ------------------------------------------------------------------------ [2012-01-28 01:45:53] phpdev at zerocue dot com An "as implemented" document has been created here: https://wiki.php.net/rfc/propertygetsetsyntax-as-implemented Only thing remaining to be implemented is static accessors. ------------------------------------------------------------------------ [2010-10-28 00:48:47] rayro at gmx dot de I also recommend this but i have a little idea too: 1. Most of the time i use get<VariableName>() syntax and I have to write new functions for that (or using __call or __set), because i protect the properties with private or protected to protect for writing them. 2. Most of all the code is ugly or has limitations using readonly/writeonly properties with __get(&$v) or __set($v,&$c) by reference. 3. It is not perfectly clean to write less code with __get or getter/setter if only want to protecting them... And less code matters! I would like to see a new, or 2 new keywords, e.g. "readonly" and "writonly", because the code will look smoother and i dont have to make the use of magic methods... Or some own designed errors for that... Now an simple example: ====================== <?php class A { /** the following syntax is just invented **/ static readable protected $foo = 1; static writable protected $bar = 2; } A::$foo++; // raises error "variable is not writeable from this context" echo(A::$foo); // will simple echo $foo A::$bar++; // will increment $bar to 3 echo(A::$bar); // raises error "variable is not readable from this context" ?> ( what about is_readable() or is_writable() for that? ) I dont think that these functions will be used, so only Reflection should be extended... and now, instead of the current syntax: ====================================== <?php class A { static protected $foo = 1; static protected $bar = 1; function __get($v) { if ($v == 'bar') { trigger_error('$bar is not readble from this context',E_USER_ERROR); } return $this->$v; } function __set($v, $c) { if ($v == 'foo') { trigger_error('$foo is not writable from this context',E_USER_ERROR); } $this->$v = $c; return true; } } ?> get/set syntax will be nice but also nasty if only read/writablity is desired... this can be confusing as this: ============================== <?php class A { /** the following syntax is just invented **/ static protected $foo { function __get() { return $this->foo; } function __set() { trigger_error('$foo is not writable from this context',E_USER_ERROR); } } = 1; static protected $bar { function __get() { trigger_error('$bar is not readable from this context',E_USER_ERROR); } function __set() { $this->bar = 1; return true; } } = 2; } ?> think about it... many developers will waive the old way or functions like getVarname and setVarname... and for all other, getter/setter will be nice as described in the rfc... ------------------------------------------------------------------------ [2009-09-13 19:56:24] president at basnetworks dot net For reference, the RFC for this feature request now exists at this URL: http://wiki.php.net/rfc/propertygetsetsyntax ------------------------------------------------------------------------ [2009-09-13 04:24:08] president at basnetworks dot net Hi Kalle, Thanks for the information. I will follow your instructions and start working on the RFC over the next week(s). Also, thanks for the link about the Developer Summit, but it does not show the outcome of the discussion, am I able to find that anywhere? ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=49526 -- Edit this bug report at https://bugs.php.net/bug.php?id=49526&edit=1