My current "oh my GOD" reaction to PHP is the great inconsistency in the function names. String functions start with str_, string_, and sometimes something else. This is important, of course, because PHP doesn't have namespaces. The POSIX regular expression function names are only somewhat similar to the Perl regular expression function names. And so on.
This really shows up the dangers of unplanned growth. I'm not suggesting design by committee, but simply articulating a few module design principles could have solved these messes.
Which principles? I'm thinking things like:
I suppose 3 and 4 are really the same. That's the problem with trying to write down commonsense. The underlying principles that govern our behavior are sometimes completely invisible to us. That's why we need people like Damian, who can describe what we're supposed to do in such a way that we go "oh! well, duh. Why didn't I think of that myself?"
--Nat
PHP function names (Score:1)
You're not kidding. It's great that we can remember that Perl builtins never have underscores. With PHP, the use of underscores is totally random (sort of like CGI.pm used to be). is_array(), is_numeric(), etc., have underscores, but isset() doesn't. strlen(), strtr(), and a bunch of other str* function have no underscore, but str_pad(), str_repeat(), and str_replace() do. And you've got stuff like frenchtojd() t