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

Reply via email to