Disclaimer: I received a free copy of this work under the O’Reilly Blogger Review Program.
Let’s be honest: web development is confusing to the uninitiated. Unlike lots of other types of programming, where one learns a single language, web coding requires a stack. You’ll need both frontend and backend languages, database setup, markup, and styling. For someone with no background at all, it can be very unclear where to start.
Robin Nixon’s Learning PHP… is an attempt to bring novices up to speed with a set of web technologies sufficient to build an end-to-end web solution. It’s a solid, gentle introduction from the absolute ground up. Nevertheless, I have mixed feelings about recommending it to a newcomer.
First things first, though: the book does what it promises. Readers get a first-pass introduction to PHP, MySQL, JavaScript, CSS, and HTML5. Almost no background is assumed, and Nixon goes to some lengths to help readers set up a development server on their local machines for purposes of running the numerous code examples. It’s solid coverage, and when it’s done, you should be able to set up a nice little form-based site running on your local machine. (Deployment is not covered, being its own horrendous beast.)
The book seems like it might be a fit for curious students in high school or early college. Yet, despite its methodical presentation and reasonable coverage, I would have reservations about recommending this particular text.
First, the choice of technologies. I understand that PHP remains the massive bummock of the web programming iceberg, but seriously, aside from maintaining legacy code, do we really want to be teaching new web programmers PHP? PHP may be easier to learn, but it seems to me there are much more powerful choices out there, even if we stay well back from the bleeding edge. All in all, aside from the HTML5 coverage, the book seems to reflect a perspective on web development that feels dated.
Second, the lack of frameworks. Any of them. Again, maybe this is asking too much, but only introducing vanilla JavaScript is going to leave beginners very confused when they begin looking at even simple code on the real web and find it riddled with jQuery. Even without getting into templating, modern JS frameworks, and single-page apps, there’s a big gap between the impression left by the text and the way serious web development works. Nixon’s own O, S, and C functions, used in later chapters, may be nice as a teaching tool, but get readers used to idioms that don’t show up much in the wild. Though the book gives reasonable introductory coverage, it will still be a big leap for readers to level up to Django or Rails or one of the Node-based frameworks, in part because those worlds bear so little resemblance to the one introduced here.
In conclusion, I have to credit Nixon for pulling together and unifying so much tutorial material in such an easily digestible format. It’s probably the right first step for many people. On the other hand, readers who follow him loyally through these 700 pages may nonetheless find that the second step in any direction ends up being a lot higher than they hoped.