writes: "Practical CakePHP Projects is published by Apress, intended for for developers familiar with PHP, and at least marginally familiar with CakePHP as well. The book starts with some introductory material, then moves on to twelve chapters of practical project implementation. If you're not familiar with CakePHP, it's a rapid application framework for PHP. It cuts out a large swath of redundant tasks needed in everyday web development. It's a mature framework with a fantastic community I'd recommend you check out.
Honestly, the first impression of the book isn't great (stick with me though, it gets much better). First, as a member of the core CakePHP team, it's always a bit disappointing to see a book coming from people I'm not familiar with. I'd suggest prospective authors get their feet wet contributing to the community in a significant way before moving straight on to commercial publishing. The lack of community interaction shows in the first chapter-it's essentially a rehash of material that is better found in CakePHP's official online documentation. It's going to be more up to date, and there's really no reason to have it in this book..
You'll probably want to skip right to chapter 2, where the title of the book comes into play — actual projects created in CakePHP. In general, the specific project chapters are technically accurate and easy to follow. Newcomers to the CakePHP field will enjoy the examples and code they can pick through to better see the big picture.
Having said that, some chapters seem much more relevant than others. For example, leading out with a blog application (which is usually the first example new users are pointed to in the official documentation) seems a bit redundant. They don't cover much new ground there, focusing on vanilla MVC interactions. There's a bit of a diversion into the creation of RSS feeds, but that's more or less covered in the official manual as well.
The following chapter covering a simple e-commerce application is similarly uninteresting. More vanilla MVC, peppered with a bit of Google Checkout and PayPal integration at the end, which unfortunately only amounts to rendering some buttons that hand users along to their respective payment engines.
New users may appreciate these chapters, but you'll probably find comparable overviews of Cake's underpinnings in blogs, the CakePHP Bakery, and in the official manual.
The remaining chapters of the book (4-13) is where the book really shines. Project examples are varied, and each idea is inviting and innovative:
- A message forum webservice
- Google maps for traveling salesmen
- A Twitter/Google translator mash-up
- Unit Testing (not so much, but stay with me)
- An ACL-enabled control panel
- Internationalization using behaviors
- Custom automagic fields
- Custom view tags integrated with plugins
- "Dynamic Data Fields" (not that CakePHP specific, but interesting to some)
- Captcha (which is more of an example with controller/component callbacks)
My impression of the remaining chapters was very positive. The steps are easy to follow and seem well-explained. The code inserted onto the printed page gets a bit hefty in places (three consecutive pages in chapter 9), but that's to be expected in some instances, I suppose. It's a programming book, after all.
Best practices seem to be evident as well — keeping your models thick and your controllers thin, not repeating code, and following CakePHP convention in order to take advantage of automagic are all present.
Aside from the rehash that is the introduction and first few chapters, the authors seem to avoid that in the rest of the book. Each chapter is atomic enough to pick up on its own (more or less), yet you don't have to be re-introduced to covered topics each time you move on.
Putting my own personal grudge of people publishing before contributing to the core effort aside, I'd recommend the book to users who are getting started with CakePHP. Experienced users have probably seen most of what's here, but new users will enjoy example after example of good CakePHP code in interesting, practical projects."