To complement the recent post regarding Python resources, I figure this is a great time to ask what resources (books, websites, tutorials, etc) people used to learn PHP.
I really want to learn PHP and MySQL properly this Christmas, and while I've completed the basic tutorials you'll find at the major websites, I want something that covers everything in-depth and facilitates the learning experience with good quality, relevant examples that you can see yourself actually using.
So I guess this question is really two-fold:
1) What resources did you use to learn?
2) Did you like them? And if you could do it again what resources would you use and in what order?
If you have the time, I recommend building a framework complete with a simple ORM. Nothing will give you a quicker broad overview of any language's strengths and weaknesses.
Also, most of the 'learning' about PHP is wrapping your head around the included gigantic library of function calls and methods. There are a lot of people who don't. When I was first learning, I'd search for ways to get specific things done and almost always come across code where people manually implemented things and I'd find out later that there's a function call that does the job. Sometimes thats due to people not knowing about the fucntion and sometimes that due to the post being outdated, so always look for the dates on which advice is given. There are PHP5 ways to do things and pre-PHP5 ways to do things.
Because of that, spend a few days browsing the included library. And, make sure you browse the comments people have left in the online documentation. They are generally good quality, contain code samples, etc. If someone posts bad code, others are quick to point out the flaws.
In the case of PHP, there is a lot of bad advice out there in general, so choose wisely.
And, there are a few things that are hard to search for because they require searching for single characters and search engines generally suck at it. Some examples:
@ as in @function(x,y) - used for error suppression. & as in &$foo - pass by reference instead of by value (automatic with objects but not arrays) $ as in $foo(x,y,z) - dynamic function calling. the value of the string is the name of the function that will be called. $ as in $foo->$bar - same thing with object methods. $$ as in $$foo() - double dereference function calling. yuk.
Finally, I'd also browse around http://www.stackoverflow.com and look at the php-tagged questions and answers.