On Dec 6, 2011, at 8:58 AM, Rasmus Schultz wrote:

> On Tue, Dec 6, 2011 at 3:45 AM, Christian Kaps 
> <christian.k...@mohiva.com>wrote:
> 
>> Hi,
>> 
>> I also find this syntax confusing and I think it has a huge WTF factor.
>> 
>> Some thoughts about the syntax:
>> - At the first glance, it isn't clear which visibility the getter or
>> setter has
>> - The extra indentation level makes the code more unreadable
>> 
>> class Foo {
>> 
>>   /**
>>    *
>>    */
>>   private $_bar;
>> 
>>   /**
>>    *
>>    */
>>   public $bar{
>> 
>>       /**
>>        *
>>        */
>>       set {
>>           if ($bar) {
>>               $this->_bar = $bar * 12;
>>           } else {
>>               $this->_bar = 0
>>           }
>>       }
>> 
>>       /**
>>        *
>>        */
>>       private set {
>>           if ($this->_bar === null) {
>>               return 0;
>>           }
>> 
>>           return $this->_bar;
>>       }
>>   }
>> 
>>   /**
>>    *
>>    */
>>   public function baz() {
>> 
>>   }
>> }
>> 
>> - What about type hints?
>> 
>> I prefer a more AS3 like getter and setter syntax.
>> http://help.adobe.com/en_US/**ActionScript/3.0_**ProgrammingAS3/**
>> WS5b3ccc516d4fbf351e63e3d118a9**b90204-7f30.html#**
>> WS5b3ccc516d4fbf351e63e3d118a9**b90204-7fcb<http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f30.html#WS5b3ccc516d4fbf351e63e3d118a9b90204-7fcb>
>> 
>> Have you read my previous mail 
>> http://news.php.net/php.**internals/56762<http://news.php.net/php.internals/56762>
>> .
>> I think this syntax fits more to PHP because its similar to the already
>> existing(magic) getter and setter syntax.
>> 
>> What do you think?
>> 
>> Christian
>> 
> 
> I agree with all of those points - the extra indentation looks messy, and
> yes, type hints are important. It does fit better with PHP in general.
> 
> It would be nice to also have support for automatic backing fields in
> addition though - so something simple like this:
> 
> class BlogPost
> {
>    private $_author;
> 
>    public get author()
>    {
>        return $this->_author;
>    }
> 
>    public set author(Person $value)
>    {
>        $this->_author = $value;
>    }
> }

I don't like this approach.  All efforts (which I'm currently part of) to 
implement type hinting return values will be compromised.  If you want to 
implement accessors, keep them within a syntax that makes sense.  Personally, I 
support the C# style as much as possible.  Methods are already overused for 
purposes they shouldn't be, so if we're attempting to get around __set/get, 
let's not replace them with more method implementations.

> 
> Could be written like this:
> 
> class BlogPost
> {
>    public Person $author;
> }
> 
> Effectively, this shorthand syntax just gives you type-safe properties -
> but it refactors nicely, since you can replace it with a full
> implementation of a backing field at any point.
> 
> (on second thought, I don't like the idea I suggested before - adding a
> magical $value in accessors, similar to $this - it's confusing and it's
> going to look like an undeclared local variable...)


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to