Alright, since amazon kept on complaining about review (slow reader).
I've read 7 out of 9 chapters. Chapter 8 and 9 are in the back burner for now, not because it's boring, but I think it's more optional or things to learn later. My background is C/C++/VHDL/MIPS/ and whatever else I forgot to mention.
Codes in the book works!
Almost all of it. There's a small typo on page 159, the code assign a value to an array without specifying the index, so I believe that rewrite the array. Checking it with the source code, which you can download from the website, the author actually have something different. Anyway, took 3 hours to debug 300 lines or so, learned to debug better yay. There are so much codes in the book, that it gives you chances to practice the OOP that the author is trying to teach you, and it's very applicable to real world coding.
Tone and pace:
The tone and the pace the author goes throughout the book is straight forward. Whenever he skipped something he would state that you should have learned it or go research it (the regular expression functions), which is understandable because this isn't a "let's teach you php as if you know nothing about it."
You learned to extend/inherit the php's offical date class. Learn how to extend the exception library, neat. You basically learn how to extend and customize php built in libraries or create a class to wrap php functions, facade pattern, and make it tailor to you, so that you can reuse it in your next project, and make your life easy. OOP, ahh such a beautiful concept.
The last three or so chapters are more advance, XML, SPL (standard php library), RSS, and such. What really sweet is the later chapter reuses the classes that you've code in previous chapters. So it shows the strength of OOP (reusability) and such.
On page 195, it's out dated the function does return a message so the if else statement isn't needed but meh.
On page 239 regarding XML namespace, since php 5.3 came out is there another way to do it? Shrug, it doesn't matter that much the way the author does it in the book currently isn't that bad. I wish the author spent his time talking more about the concept of namespace. I ended up googling that.
Oh, the clone subject is mention but isn't use in real world coding. That's a complaint I guess. I wish there was a least a 300 lines code project with the clone keyword in it. I believe it was only mention once about dvd and whatnot code. Oh well. Maybe it's in the last 2 chapters?
Oh debugging is always fun. On the date class when I had to reuse my date class for the XML chapter, the date output had the day and the month together without a space in between it. Ugh... had to debug that 400+ lines -_-. Learned to start debugging all output functions first haha.
Coding Standard and Documentation:
What's also nice is there's a coding standard, the Zend Framework coding standard, so if you don't have a coding style yet, at least you got one now. The phpDocument is pretty sweet, teaches you to document your code so other people can read it. Anyway, the installation of phpDocument isn't exactly there, so google it.
This is THE book where I've learned OOP for PHP. It's a great book and I enjoyed it a lot. No book is perfect but this book set out to teach you something, and it does that well enough to get almost ALL of the points across to ya. I recommend this book to any one that knows PHP but knows nothing about OOP. If you want to make your life easy, have maintainable codes, and reusable codes, this book will teach you it.
Update July 19, 2010:
Basically teaches you how to emulate multiple inheritance with interfaces.
You end up extending a class and at the same time implementing two interfaces (countable & iterator).
-The closing xml tag code explanation could have been better if the author refer to it being similar to a "stack". The most current XML element tag you created is the first thing that you close.
-The last test code to test out your class work or not will always output, "A problem occurred." Because the flush() function returns nothing! It's not in the errata page. A little tweak and you can have it return a bool flag if you wanted to. This isn't reported in the errata page and you can see it's an error because the official source code will do the same thing.
-Even though the author had you implementing the countable interface you don't use it at all. You can however test it out yourself. Just apply the class instance to the function .count(). So it's not that big of a deal.
Anyway, I actually found the errata page. I have to say then most of the code works if it didn't then it's either syntax or the elusive logic error.