"missing any real-world examples of why it might be useful"

One thing the I have run across in making my libraries, is the not being
able to call a function `default`.

I use the chainable getter/setter in one syntax a lot (a la jQuery). Hence
when I have a class with a property named default, and can not make a
method in that sense. It makes my API inconsistent as I have to use a
getDefault, setDefault, when every other method is a single word.

Such as:

class Foo {
    public $default;
    public function default($default = null) {
        if ($default === null) {
            return $this->default;
        }
        $this->default = $default;
        return $this;
    }
}

This might not be the prefered way to write methods, but I don't see why
the language should restrict me from doing so because the word default is
used in a different context.


On Wed, Sep 18, 2013 at 5:19 PM, Matthew Leverton <lever...@gmail.com>wrote:

> On Tue, Sep 17, 2013 at 7:50 PM, Stuart Langley <slang...@google.com>
> wrote:
> > To be honest, looking at the example in the RFC, being able to define a
> > member function 'new' on a class that completely changes the semantics of
> > the new operator is a great example of why you would not want this
> feature.
> >
> It doesn't change anything because $foo->new() has no intrinsic
> meaning in PHP. And I don't think the argument "the programmer might
> do something stupid" ever holds much weight as a no vote against
> anything. If somebody wants to create a confusing misnomer, he doesn't
> need this proposed feature to do so.
>
> But I agree that the RFC is missing any real-world examples of why it
> might be useful, and that any new language feature should have
> real-world benefits. Hopefully some more compelling reasons will be
> added to the RFC.
>
> Here's something that I've personally done with much shame:
>
> class Where
> {
>   private function _or($lhs, $op = null, $rhs = null)
>   {
>   }
>
>   public function __call($func_name, $args)
>   {
>     if ($func_name == 'or')
>       return call_user_func_array([$this, '_or'], $args);
>   }
> }
>
> $query->where('foo', '=', 1)->or('bar', '=', 2);
>
> Imagine that $query->where() returns a Where object. I really want an
> "or" method because it make things concise & readable, but this is not
> allowed. So I override the __call method to add such functionality,
> which adds useless overhead.
>
> There are a few keywords, such as list and unset, that I often wish I
> could use in PHP. So in terms of readability, I think any sane
> programmer would use this proposed functionality for good...
>
> --
> Matthew Leverton
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

Reply via email to