Rasmus Lerdorf wrote:
On Thu, 8 Jul 2004, Marc Richards wrote:
Rasmus Lerdorf wrote:
On Thu, 8 Jul 2004, Marc Richards wrote:
Does it? There are other similar constructs that don't e.g. +=, $a ? $b : $c, .=;
These have roots in other languages and as such have a familiarity to them. ?: would be a brand new operator nobody has seen before and one that looks a lot like the ternary operator which everyone knows about.
We can always create a name for the construct (in the same way the ternary statement has a name) and properly document it. If it becomes useful and popular, people will start calling it that. Proper documentation doesn't require an actual function name.
That wasn't my point. The point was that every operator in PHP is common and known to the majority of people familiar with any other language. You are proposing adding a new operator never seen before. Giving it a name won't help because how will people know this name?
They won't. Not until they hear about it or read about it. But that is true whether it is a function or and operator. Making it a function won't make everyone magically cogniscent of it. Of course it will be important to make it easy to search for information about it on PHP.net, which includes allowing people to search for ?: and providing a courtesy link from the ternary operator section.
The way you name an operator is to make it a function.
Huh? I must be misunderstanding what you mean to say, because as far as I can tell that just isn't true otherwise we would have functions like add(), subtract() and ternary().
I think that part of the reason that these things are so terse is because if would defeat the whole point to use a function name; The aim is to be concise.
No, the aim is not conciseness. That has never been PHP's goal. The aim is clarity.
I wasn't saying it was a PHP goal, I was it is the goal of certain constructs like += or .=
+= is not unique to PHP in any way. Pick 10 random mediocre PHP or
non-PHP developers out of a crowd and ask then what += does and I bet a good number will be able to tell you. Do the same with ?: and you will first have to carefully explain that no, this is not the ternary ? : operator, but rather a single ?: operator and then ask them to guess at what it might do. How many do you think will figure it out?
We don't do things to save people typing a couple of extra characters here
and there. We do things to lower the WTF factor of the language as much
as possible. The overall design from the very beginning has been to meet
the expectations of the common developer. The common developer expects
common operators such as += ++ -- != to do the right things.
Are you saying PHP will never introduce an operator that doesn't already exist in a large number of other languages?
Not having
these would give us a high WTF factor. Nobody in the world expects a ?: operator which is not the ternary operator. And having such an operator
would indeed be a big surprise and as such its WTF factor is high.
To be honest I am kinda hot and cold about how close it is to the ternary operator. On the one hand the two could be easily confused, but on the other hand they are in fact very similar in function in which case we could "market" (meaning document) them as being related.
Ternary operator:
$a = $b ? $b : $c;
Compound Ternary operator:
$a = $b ?: $c;
The only asymmetry being that the "compound ternary operator" doesn't throw and error if !isset($b) whereas the regular one does...deal breaker? I dunno.
Marc
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php