On Sun, Dec 12, 2021, at 12:56 PM, Dan Ackroyd wrote:
> On Sat, 11 Dec 2021 at 17:46, Larry Garfield <la...@garfieldtech.com> wrote:
>>
>> Using symbols, however, would (with some future extension to make it 
>> extensible) allow for:
>
> I don't get how it's easier, other than being able to skip naming the
> symbol name. e.g. adding union and intersection operators
>
> function __union(...){}
> function __intersection(...){}
>
> vs
>
> operator  ∪(...){}
> operator ∩(...){}
>
> In fact, I find one of those quite a bit easier to read...

If the list of operators is expanded by the engine, yes.  The point is that IF 
it were decided in the future to allow user-space defined operators, that would 
be considerably easier with a separate keyword.  Eg:

class Matrix {
  operator dot(Matrix $other, bool $left) {
    // ...
  }
}

$result = $m1 dot $m2;

Whether that is something we want to do is another question, but the operator 
keyword makes that logistically easy, while using __mul or __astrisk makes it 
logistically hard.

Using an attribute instead to bind a method to an operator, as previously 
suggested, would also have that flexibility if we ever wanted it.  There seems 
to be a lot of backpressure against using attributes for such things, though, 
and it wouldn't cleanly self-resolve the issue of keywords that make sense on 
methods being nonsensical on operators.  (public, static, etc.).  I'd probably 
be fine with it myself, but I cannot speak for others.

--Larry Garfield

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

Reply via email to