Besides inconsistent/bad library argument order/naming, and a couple parser related issues that are slowly being fixed (like the "immediately use an array returned from a function" issue fixed in 5.4) I don't see any "huge amount" of quirks.
I do see a lot of bikeshedding, from people who could have found similar BS in most languages in major use.
Yup. The argument order of similar functions being inconsistent is the only thing I run into on a day to day basis. I never remember the order or even names of most functions anyways and with proper tools it's irrelevant. Honestly, I think people like to bust on PHP mainly because it's in vogue and "acceptable" by a lot of ignorant folks. I assume in some circles it gets one brownie points. It's almost as if they're pretending that bad code doesn't exist in the language of their choice, that somehow the choice of language can protect one from others' stupidity and bad code. In the meantime, PHP developers are actually getting things done and the good ones are writing extremely clean code. Like most of the PHP community, I'm extremely glad for the effort going into HHVM which I see as the future of PHP.
Most languages aren't templating languages at first place. PHP was saved because it decided to look like Java,which neither Ruby or Python do,which allows writing these huge codebases like Doctrine or Symfony.
I personnally started coding with Actionscript 3, I wish PHP looked exactly like that,while keeping the scripting and the execution model.
> PHP was saved because it decided to look like Java,which neither Ruby or Python do,which allows writing these huge codebases like Doctrine or Symfony.
What does looking like Java have to do with being able to write huge codebases? Both Python and Ruby have libraries just as big as (or bigger than) Doctrine and Symfony.
> What does looking like Java have to do with being able to write huge codebases? Both Python and Ruby have libraries just as big as (or bigger than) Doctrine and Symfony.
Django and Rails, to name just two open source projects, and I've seen proprietary Python apps with hundreds of thousands of lines of code. You still haven't said how PHP allows you to write bigger codebases than Python or Ruby, and what that has to do with looking like Java.
These issues are the least of it's 'quirks'. The most important thing that is wrong with it is the badly or 'un-designed' core of the language. This result of this is that when you are implementing modern programming constructs, you won't be able to implement it in a consistent way (Most of the time the implementers does not care, but even if you do you ill see quickly running out of options.). So the modern features PHP get are often half-baked so that if you try to put it to real use, it ll come to a grinding halt.
Another aspect of this 'un-designed' core is that there will be a big fight over introduction of any 'core-like' feature. And often implementers wont be able to go with one philosophy and is forced to make everyone happy, ending up with very weird behaviors in the implementation.
Another thing is Exceptions. Because the exceptions was not available from the start, only a part of the language uses them. So you cannot rely on exceptions being thrown in a consistent way.
Another important thing is the most people who have been working on the language are hobbists and students with no sort of professional experience, and they end up implementing the features in the most awkward fashion (Eg: Methods on the datetime object mutating it).
Besides inconsistent/bad library argument order/naming, and a couple parser related issues that are slowly being fixed (like the "immediately use an array returned from a function" issue fixed in 5.4) I don't see any "huge amount" of quirks.
I do see a lot of bikeshedding, from people who could have found similar BS in most languages in major use.