The PHP Anthology 2nd Edition
Michael J. Ross writes "When veteran PHP developers have specific and nontrivial functionality that they want to implement in their code, they can do so from scratch, but this can be time-consuming or essentially reinventing the wheel. They can adopt completed code posted in an online discussion forum, but such code tends to be buggy. They can use an open source library or other packaged code, but this approach can oftentimes prove to be overkill. Consequently, many developers prefer focused solutions found in PHP cookbooks, such as The PHP Anthology: 101 Essential Tips, Tricks & Hacks." Read on for the rest of Michael's review.
The PHP Anthology: 101 Essential Tips, Tricks & Hacks, 2nd Edition
author
Davey Shafik, Matthew O'Phinney, Ligaya Turmelle, Harry Fuecks, and Ben Balbo
pages
542
publisher
SitePoint
rating
9/10
reviewer
Michael J. Ross
ISBN
0975841998
summary
A tasty cookbook of PHP recipes
The second edition of this book was published by SitePoint on 23 October 2007, under the ISBNs 0975841998 and 978-0975841990. On the book's Web page, the publisher makes available an overview of the book, links to the authors' sites, chapter descriptions, the table of contents, the index, editorial and customer reviews, the book's sample code, and errata (there are none as of this writing). In addition, there is a link for downloading three sample chapters (2, 10, and 11), in PDF format. The pop-up window for entering an e-mail address for receiving the download link, also gives one a chance to subscribe to SitePoint's Web development newsletters.
All of the authors of The PHP Anthology — Davey Shafik, Matthew O'Phinney, Ligaya Turmelle, Harry Fuecks, and Ben Balbo — appear to have plenty of experience with the language, and probably also have spent time interacting with other PHP programmers in online forums, including SitePoint's own PHP forum. Experience reading the questions posted by programmers of all skill levels, and especially trying to answer them, can give anyone a better understanding of what are the most common challenges encountered by the typical PHP coder. In the book's preface, the authors note that, for choosing the particular problems for their book, they chose ones frequently seen in the SitePoint forum, which is likely representative of all active PHP forums.
This new edition of the book has been updated for PHP version 5, including PHP's major improvements to its implementation of classes and objects, among other aspects of the language. It is one of a growing number of PHP books that depart from the traditional tutorial and reference formats, and is instead written in the increasingly popular "cookbook style." Each section presents first a common problem that Web programmers often encounter, followed by generally complete source code that solves the problem, and commentary that explains the overall solution, along with special considerations that the programmer should watch out for in adapting the given source code to their own situation.
As seen in the majority of cookbook-style programming books, this one groups the problem-and-solution sections into chapters, of which there are 13: an introduction; working with databases using the PHP Data Objects (PDO) extension; strings; dates and times; forms, tables, and clean URLs; files; e-mail; digital images; error handling; access control; client- and server-side caching; XML and Web services; PHP coding best practices. In addition to the preface and index, the book also has four appendices: configuring PHP; a checklist for choosing a Web hosting service; a security checklist; and working with the PHP Extension and Application Repository (PEAR). In total, the book is 542 pages long, and yet it is not visually overwhelming, partly because of the large and readable font chosen by the publisher, as well as the innumerable code snippets and browser screen shots interspersed throughout the narrative.
The primary strength of this book is the significant amount of information provided to the reader, in the form of summaries of critical Web programming problems, working PHP code that addresses those problems, discussion as to why each particular approach was taken, and occasional asides that warn the reader about special difficulties that they might encounter as they implement the solutions within their own development environments and for their own projects. Some of the material may be of little interest to the average reader — such as the chapters on PDO and XML — but most of the material would be of interest and benefit to any conscientious PHP programmer. The chapters on error handling and access control are alone worth the price of the book.
However, this second edition of the book has some weaknesses that may or may not have been introduced since the first edition (which was not readily available for comparison). But none of them are overwhelming or unfixable. Firstly, a reader hoping for a well-edited book will likely become distrustful by the authors' misuse of the term "that" in place of "who." Secondly, there are far too many ambiguous comments in the first-person, e.g., "I would dare to say that..." In a book written by five authors, the reader naturally has no idea who is speaking. Thirdly, there is a fair amount of inconsistency in the formatting of the code throughout the book, including indentation and other spacing, as well as variable naming. Also, every instance of a "{" on its own line (presumably to line up vertically with the corresponding "}"), is an antiquated waste of space, since any decent programmer's editor or integrated development environment (IDE) can do brace matching automatically.
Lastly, almost all of the section titles begin with the phrase "How do I." That is fine within the body of the book, at the beginning of every section. But when dozens of these section titles are listed together in the table of contents, that phrase could be excised so each section's topic would be faster to spot, and there would be fewer unnecessary words. In fact, the section titles don't necessarily have to be posed as questions. For instance, "Using Sessions" would be just as clear as "How do I use sessions?" and faster to read.
It should be noted that this book is best suited for intermediate to advanced PHP programmers, who will certainly get the most out of it. A programmer new to PHP, who would like to begin learning the language, should start with any one of the many tutorial-style PHP books available.
For readers who prefer the portability or environmental benefits of e-books, a PDF version of The PHP Anthology is available from the publisher, on the aforesaid Web page. Any programmer who is — or anticipates — doing PHP work away from their print technical library, should definitely consider obtaining the e-book, which thus can be added to their laptop's development environment, and be readily available for quick reference. The e-book contains all of the content of the print version. It also makes good use of color, for screenshots and other illustrations, as well as using a blue background for the sample code, which is a bit easier to read than the gray used in the print version.
Overall, this new edition of The PHP Anthology offers practical solutions to many common PHP problems, clear explanations of those solutions, and working code — in print and online — that can be quickly used as is or modified as needed. PHP developers should find this book an informative and valuable part of their technical library.
Michael J. Ross is a Web developer, writer, and freelance editor.
You can purchase The PHP Anthology: 101 Essential Tips, Tricks & Hacks, 2nd Edition from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
All of the authors of The PHP Anthology — Davey Shafik, Matthew O'Phinney, Ligaya Turmelle, Harry Fuecks, and Ben Balbo — appear to have plenty of experience with the language, and probably also have spent time interacting with other PHP programmers in online forums, including SitePoint's own PHP forum. Experience reading the questions posted by programmers of all skill levels, and especially trying to answer them, can give anyone a better understanding of what are the most common challenges encountered by the typical PHP coder. In the book's preface, the authors note that, for choosing the particular problems for their book, they chose ones frequently seen in the SitePoint forum, which is likely representative of all active PHP forums.
This new edition of the book has been updated for PHP version 5, including PHP's major improvements to its implementation of classes and objects, among other aspects of the language. It is one of a growing number of PHP books that depart from the traditional tutorial and reference formats, and is instead written in the increasingly popular "cookbook style." Each section presents first a common problem that Web programmers often encounter, followed by generally complete source code that solves the problem, and commentary that explains the overall solution, along with special considerations that the programmer should watch out for in adapting the given source code to their own situation.
As seen in the majority of cookbook-style programming books, this one groups the problem-and-solution sections into chapters, of which there are 13: an introduction; working with databases using the PHP Data Objects (PDO) extension; strings; dates and times; forms, tables, and clean URLs; files; e-mail; digital images; error handling; access control; client- and server-side caching; XML and Web services; PHP coding best practices. In addition to the preface and index, the book also has four appendices: configuring PHP; a checklist for choosing a Web hosting service; a security checklist; and working with the PHP Extension and Application Repository (PEAR). In total, the book is 542 pages long, and yet it is not visually overwhelming, partly because of the large and readable font chosen by the publisher, as well as the innumerable code snippets and browser screen shots interspersed throughout the narrative.
The primary strength of this book is the significant amount of information provided to the reader, in the form of summaries of critical Web programming problems, working PHP code that addresses those problems, discussion as to why each particular approach was taken, and occasional asides that warn the reader about special difficulties that they might encounter as they implement the solutions within their own development environments and for their own projects. Some of the material may be of little interest to the average reader — such as the chapters on PDO and XML — but most of the material would be of interest and benefit to any conscientious PHP programmer. The chapters on error handling and access control are alone worth the price of the book.
However, this second edition of the book has some weaknesses that may or may not have been introduced since the first edition (which was not readily available for comparison). But none of them are overwhelming or unfixable. Firstly, a reader hoping for a well-edited book will likely become distrustful by the authors' misuse of the term "that" in place of "who." Secondly, there are far too many ambiguous comments in the first-person, e.g., "I would dare to say that..." In a book written by five authors, the reader naturally has no idea who is speaking. Thirdly, there is a fair amount of inconsistency in the formatting of the code throughout the book, including indentation and other spacing, as well as variable naming. Also, every instance of a "{" on its own line (presumably to line up vertically with the corresponding "}"), is an antiquated waste of space, since any decent programmer's editor or integrated development environment (IDE) can do brace matching automatically.
Lastly, almost all of the section titles begin with the phrase "How do I." That is fine within the body of the book, at the beginning of every section. But when dozens of these section titles are listed together in the table of contents, that phrase could be excised so each section's topic would be faster to spot, and there would be fewer unnecessary words. In fact, the section titles don't necessarily have to be posed as questions. For instance, "Using Sessions" would be just as clear as "How do I use sessions?" and faster to read.
It should be noted that this book is best suited for intermediate to advanced PHP programmers, who will certainly get the most out of it. A programmer new to PHP, who would like to begin learning the language, should start with any one of the many tutorial-style PHP books available.
For readers who prefer the portability or environmental benefits of e-books, a PDF version of The PHP Anthology is available from the publisher, on the aforesaid Web page. Any programmer who is — or anticipates — doing PHP work away from their print technical library, should definitely consider obtaining the e-book, which thus can be added to their laptop's development environment, and be readily available for quick reference. The e-book contains all of the content of the print version. It also makes good use of color, for screenshots and other illustrations, as well as using a blue background for the sample code, which is a bit easier to read than the gray used in the print version.
Overall, this new edition of The PHP Anthology offers practical solutions to many common PHP problems, clear explanations of those solutions, and working code — in print and online — that can be quickly used as is or modified as needed. PHP developers should find this book an informative and valuable part of their technical library.
Michael J. Ross is a Web developer, writer, and freelance editor.
You can purchase The PHP Anthology: 101 Essential Tips, Tricks & Hacks, 2nd Edition from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Warning, this is a goatse.
I'm at work. And seeing the word goatse buried at the end of that link. Not a good idea.
It has been how many years since tubgirl and we are still dealing with this shit. It hate goatse.
That's like arguing over tabs versus spaces.... of all the things in a book to talk about, whether the code has its braces on the same or newline is as irrelevant as tabs vs. spaces or vi(m) vs. emacs
I disagree. Beginning books are usually large tomes that are anything but concise (Python books from O'Reilly!), take pages to get to the point, and the examples can be difficult to follow.
The free online tutorials are concise, provide links to other tutorials, sometimes even editing boxes where you can experiment with a concept, written better, and they're free! After you're done with your $45 tutorial, it usually becomes a doorstop or something to throw under the cat before (hopefully) she pukes.
I prefer Flambe as apposed flamebait.
I forgot the source of this one, but it helps put things in perspective:
If no one ever reinvented the wheel, we'd be rolling around on stone tires now.
Our hearts are extended to the 17 victims of the recent internet fraud
Disclaimer: The opinions expressed in the following comment are of my own. Please do not flame or complain because I do not share the same opinion as you.
:-)
PHP is not that bad of a language. Yes, it has it's issues and has brought on it's own stereotype because of it's ease of use. But really, when it comes to getting things done and done quick.. PHP excels very well.
I use PHP on a daily basis. Not just for work (I am a web developer by profession), but for quick dirty hacks (especially when bash is not available) it is great too. I've written entire daemons that watch and entire directory tree (1000+ files) and will alert me in some way of something happens, etc. I've written a IRC-style chat system way back in the day, and so on.
PHP has GTK, and apparently QT (server appears to be down ATM) bindings now. It has a lot of really useful low-level bindings, such as FAM. Along with Sockets and friends PHP is very powerful. Especially if you can get out of the mentality that "PHP was designed for websites."
PHP really has evolved... I am very greatly anticipating the upcoming PHP 6. NAMESPACES! I can't wait.
I've used and worked with Ruby, Python, TCL, etc. etc. PHP just sits right with me.
1. How to crash your PHP blog
2. Restoring your software after your PHP blog gets hacked
3. Modifying your PHP blog to have no copyright information
4. Using PHP for SQL injections, part I (of VII)
5. Slowing your website with PHP
6. How to cancel credit cards used with PHP e-commerce systems before identity thieves max them out
7. PHP-driven cross site scripting (in Russian)
8. Using PHP for ray tracing, just kidding, lol
9. Variable spoofing in PHP blogs
10. How to make a living writing about PHP
You what? Discussion forums are full of very helpful, very talented developers. When someone posts some code in one it's seen by many eyes
The implication of the comment is that a solution from a book is likely to be better code. I've found that not to be the case on several occasions. Bugs are often not caught by technical reviewers.
I'd much rather use a forum solution than a book.
Disclaimers: I'm a moderator on a large PHP forum.
http://twitter.com/onion2k
"They can adopt completed code posted in an online discussion forum,"
No they can't that is stealing see story below.
Judging from the TOC, this book is more suitable for newbies. The rest can surely find this stuff with Google, and a lot easier than by sifting through 542 pages(!) of basic PHP topics.
Chapter 8.9 is about a topic (CAPTCHA's) that could fill a book or 2 of its own, and what's written is likely to be considered obsolete sooner or later. IMHO text like that just isn't worth the dead tree it sits on.
the first edition was very solid and taught me alot! especially about OO (or lack of it) in php5
congrats on the new book
I think you meant to say Visual Basic.
I especially love how running eval() with code that has a syntax error causes the whole interpreter to completely exit. Writing an interactive REPL must be a total bitch.
It's rather like they took perl with all its faults, and stripped off what was left that it actually did right.
Done with slashdot, done with nerds, getting a life.
Find me at http://herbert.poul.at
> PHP should have been a template language for perl
It was a template language for perl, originally.
Done with slashdot, done with nerds, getting a life.
well .. i knew an early version was implemented in perl because the author thought he needed something simpler..
didn't know it was actually used as a template engine... ever..
Find me at http://herbert.poul.at
Oh, I thought the review concerned PHP, not VB.
Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
Hey Michael,
As the language editor on this SitePoint title, I'm ecstatic to read how much you enjoyed The PHP Anthology, Second Edition, and to note the great rating you gave it!
I noticed that you made an interesting point about the that v. who confusion, and, being an editor (and therefore by necessity also being, though not always correct, a big, fat stickler), I turned to my style guide for clarification. Here at SitePoint, we rely on two AmE style manuals: The Chicago Manual of Style, and, to a lesser degree, The Elements of Style by the venerable Strunk & White.
According to Chicago,
Although "who" refers only to a person... it can be used in the first, second, or third person.
"That" refers to a person, animal, or thing, and can be used in the first, second, or third person.
Thus Chicago indicates that these two usages are equally correct:
The PHP coders who heard the news raced to their own copies of Chicago to double-check the fact.
The PHP coders that heard the news raced to their own copies of Chicago to double-check the fact.
I know this is of small note, but I thought I'd mention it all the same (after all, it's not often that us lowly language editors have anything relevant to post to Slashdot!).
Thanks again for this detailed review of the title,
Georgina
Editor
www.sitepoint.com
That's a really good analogy! After writing my fair share of PHP code, and trying to make it behave correctly, I consider writing PHP code to be comparable to fighting in a war.
http://outcampaign.org/
The parent is indicating that the gp is a goatse link, not the article itself.
Don't you just love how the slashdot moderation system totally destroys the continuity of any discussion?
If you are going to reply to a post on slashdot you must quote it, otherwise your post will be rendered meaningless by moderators.
Until I viewed this thread at -1 nested I thought you were suggesting that the article itself was a goatse link.
I seriously use Perl on a daily basis in my regular job, but for freelance stuff no Perl is to be seen in a 100 mile radius. It's PHP everywhere.
8 of 13 people found this answer helpful. Did you?
In operating systems there is a saying that those who do not know Unix will reinvent it, badly.
Among interpreted languages, those who do not know Perl will reinvent it, badly. (Python and Ruby were designed learning from Perl, not by ignoring it, unlike PHP in which case I would say we cannot talk about design.)
PHP is an ugly templating engine. PHP IS for websites.
Yeah, right PHP is easy to use...until you don't know what you're doing and just want to get a website up. Once you need it for something professional, then it gets really REALLY annoying. Inconsistent interface, 2700+ core functions, slow speed, but wait! it will have NAMESPACES finally! Didn't Perl have that since 1998?
It takes a man to suffer ignorance and smile
Be yourself no matter what they say
Whoa, so it's true. There IS a masochist district in Amsterdam!
It takes a man to suffer ignorance and smile
Be yourself no matter what they say
However, this second edition of the book has some weaknesses that may or may not have been introduced since the first edition...
This begins a 160 word paragraph going on about:
- "that" in place of "who"
- ambiguous uses of first-person
- inconsistency in indenting
- excessive whitespace
Are you kidding me? This is the most significant criticism you have of the book? This? Sure, stumbling upon standard high-school essay editing mistakes in a published work is a pain. But geez, summarize it briefly and move on. I nearly fell asleep reading that paragraph. I mean, look the discussion of whitespace:
Also, every instance of a "{" on its own line (presumably to line up vertically with the corresponding "}"), is an antiquated waste of space, since any decent programmer's editor or integrated development environment (IDE) can do brace matching automatically.
In 2007, when reviewing a programming book for a programmer's website, do we really need to say "integrated development environment (IDE)"? Will "IDE" really not suffice?
And someone should do some style editing on the reviewer. Even in high school I would have gotten crucified for beginning three subsequent sentences with "Firstly", "Secondly", and "Thirdly".
If I hadn't checked the UID of the poster, I'd swear I wrote this.
PHP is a WONDERFUL language for development. It's very flexible, fast, easily developed, and has so many extensions to it you can solve just about anything. And it scales very, very nicely. (I use PHP to process tens of thousands of student records in California - it does the job nicely, reliably, 24x7)
The only difference is that I use PHP4 for just about everything, and haven't made the switch to PHP5, yet. (I have a very, very VERY large code base and all our servers are based on RedHat/CentOS 4, which comes with PHP4)
Since PHP4 is now EOL'd as of this winter, we'll be making the switch to PHP5 probably sometime before next summer if all goes reasonably well...
I have no problem with your religion until you decide it's reason to deprive others of the truth.
Tip #1: Scrap PHP, install perl.
Tip #2-#101: Create 100 subtly different 'Hello World' programs.
You can now use PHP!
try {
@eval("-=-=-=- INVALID SYNTAX GOES HERE -=-=-=-");
} catch (Exception $e) {}
echo "Yay, I'm still here!!";
Is this a news report or a trailer for a motion picture?
Yep! And the mistress keeps whippin' until the Perl coders can see the raw bytecode in the already obfuscated scripts!
8 of 13 people found this answer helpful. Did you?
Thats personal taste and has no place in a book review. Remember that you are not the one reading your own code all the time. Clarity helps other programmers understand what you are doing and curly brackets on their own lines helps immensely. gregor
Namespaces are expected in PHP 5.3, due in Spring 08. Unfortunately, the way they are designed is more like a package than a namespace. They don't seem to accomplish much that you can't do by naming your classes with a prefix.
For example, say that you have a code library named Robert, which contains a class named Dole. Traditionally you'd define it like this:
class Robert_Dole() { }
With namespaces you'd do this:
namespace Robert;
class Dole() { }
And you'd use the class like this:
use Robert as Bob;
$myBob = new Bob::Dole();
Unfortunately, you can't do this:
use Robert;
$myBob = new Dole();
Perhaps they'll be useful, but to me they're looking like a half-assed effort just so we can say, "yes we have namespaces!"
All your namespaces are belong to PHP.
I really hope they are not a flop.
:-)
From what you have described here, it looks like it will allow us to use some form of magic handler/config option to auto-load "modules"... kind of like the other language's "use" functions. While not true namespaces, it would be pretty handy for large CMS's, etc.
My biggest hope is that they use namespaces for all of the major modules such as GTK, even the DB's, and so on... but who knows for sure?
Well, it's already possible to set up class autoloading. For example, if I use the class Zend_Db_Abstract, the autoloader will go out and include the file Zend/Db/Abstract.php, with no include or require statement needed.
It will still be possible to set up autoloading with modules, but I have yet to see how it will be any better. Hopefully the usefulness will become apparent in time.