Inconsistencies of PHP:
* OOP is not fully realized, big part is still procedural, so it's a mixed bag
* Procedural part has many naming conventions - something that OOP is supposed to fix
* Returned values mean one thing for this function and another thing for other function
* Parameter order is ambiguous for some functions, of the same group
* In attempt to go OOP now there's too many ways to do the same thing
Different clients (browsers), different web-servers, different settings, different PHP versions - it all takes the toll. Also, security is of utmost importance and is often neglected.
Most web content management systems are more or less structured collections of wrappers around all these troubles of PHP. They do it for you. And also troubles of XHTML and Javascript (and jQuery), so you don't have to bother. You can use them to build sites right away - it's meant to be easy. But sooner or later you'll have to fix something underneath and, therefore, understand what's underneath, too.
If you just want to take a stab at it, some might argue that understanding OOP isn't even necessary - in most cases all code ends up being unmaintainable clusterfsck, anyway, so just go with it.
If you do want to understand OOP, perhaps consider Ruby. It's a kind of a hipster language, that, but at least it has OOP principles at its core.
Other options are Java and C#. They are universal, more robust than any single web-oriented thingamajig will ever be.
Go Java if you lean towards Android, for example. Go C# if you lean towards larger wallet *cough*
And in any case, I'd suggest Code Complete:
http://www.amazon.co...n/dp/0735619670