on April 9, 2004
A PHP book for serious programmers
Core PHP is a book for serious programmers written by people who obviously know the subject inside out. The book is over a 1,000 pages long with densely packed pages. One of the authors Zeev Suraski is the co-creator of the upcoming PHP5 Zend Engine (the heart of the PHP system). The fact that it covers PHP 5 from people involved with that development give it an edge on many older books currently on shelves. The writing style is dry and factual (which is what I want from a technical book). If you have experience with other programming languages such as perl or C/C++ this book could be your rapid transition tool. I have a significant background in Java and a few years ago regarded PHP as just another scripting language that would allow trivial jobs to be done easily and give me sufficient rope to do damage when attempting bigger jobs. I was wrong, and the new features of PHP 5 may help it capture more of the hearts and minds of web developers. Unlike Java there is a shortage of good PHP books.
The tutorial section
The tutorial section covers the basics of obtaining and installing PHP both on Windows and UNIX style platforms. I would have preferred it if they had gone into more details on this subject as I seem to manage to mess up installation and configuration every time I do it under Linux. I always seem to fumble around, missing vital components and when I finally get it working I am not quite sure what it was that made it work. The brevity of the installation instructions are rather summed up by the comment "if you have ever compiled software you've found on the net you will have little trouble with this installation".
The book includes some basic tutorial material at the start but it quickly moves on to topics that would only be of interest to people who have real problems to solve. For example, before page fifty the book covers indirect references to variable names. I found this quite useful as it is something I have wondered about when using other programming languages The book covers the subject of recursion, which is a powerful technique but probably only appropriate for a fairly serious programmer.
Chapter 6 consists of about 40 pages covering PHP and Object Orientation. This is approximately 40 pages more than most PHP books. I have used th OO features of PHP4 but always felt they were a "bolt on afterthought". It looks like PHP5 has integrated OO more deeply into the core of the language. I appreciated the new features of PHP5 such as constructors and destructors, the access specifiers (public, private etc) and abstract classes. It is only a matter of time before PHP5 becomes the default version of the language, so it is a good idea to understand the ideas as soon as possible. It also means you can transfer concepts from other OO languages such as Java and C++. Because the authors are so intimately involved with PHP they were able not only to comment on the changes in syntax in PHP5 but also how it may improve performance in certain circumstances. To quote from chapter 6, "In addition to providing a more intuitive object model, the handle-based system has several additional advantages; improved performance, reduced memory consumption, and increased flexibility".
The function reference
The middle 670 pages of the book are a functional reference covering almost anything you can do with PHP, from interacting with databases to xml processing. Some of the API calls listed struck me as somewhat odd for such a section. For example the interface to the MnoGoSearch search system might be quite useful but is hardly part of every programmers essential PHP toolkit. The function reference also covers System V messages, semaphores and shared memory, hmmm might be a while before I need that information. On the more common front it covers Apache, IMAP, several XML systems and automatically creating and manipulating images and graphics. I couldn't see anything on manipulating flash movies but any geek knows that flash is the work of the devil and everything should be done on the server. The PHP community has created some excellent online documentation for the PHP function calls, but this book would make a good additional commentary for any programmer. Personally I can live with as much explanatory code examples as I can get my hands on.
PHP & Software Engineering
I know that some people do not like to see the words "software engineering" and PHP on the same page. The section on Software Engineering is interesting in that PHP is frequently regarded as a tool for Quick and Dirty style of programming. My comment on this is that Quick and Dirty programming is always dirty and never quick in the long run. This section covers the use of the language features of PHP 5 to implement classic design patterns such as the singleton and factory patterns. It seems like every programmer and his dog has written about design patterns and the Java language and it is a delight to see someone tackle this subject in PHP, particularly using the new features of the upcoming PHP 5 version.
There are some surprising omissions such as a very brief coverage of database independent API's such as adoDB and the pearDB classes. With the pearDB classes now part of the core PHP distribution this seems a surprising omission. For me database portability is important, I would like to be able to at least easily port my code between popular databases. I could find no mention of SQL Lite, one of the features due to be bundled with PHP5 when it ships.
A good comprehensive reference, not for beginners. A combination of this book, a "cookbook" style reference and the web documentation and you are set for programming anything with PHP.
on April 5, 2004
One of my key concerns when reviewing a good book is the pull between information density and a light, easily read style. I believe that as we get further along the learning curve we can sacrifice some readability for density -- we want more facts and less explanation.
The authors of Core PHP Programming have found a marvelous middle ground. Toward the beginning of the book they have a great deal of light, explanatory material as they cover the basics of PHP. As they move towards more advanced topics there is less explanation and a tighter packing of information. At the same time the book has a large number of small code examples throughout, making sure that you know how to use the functions under discussion.
This is the third edition and I must admit that I had not come across it in either the first or second editions, so I have no great way of comparing them in this review. It has certainly been revised to take into account the changes for PHP 5 and examining the table of contents for the second edition on Safari I can see the that the basic structure has remained the same while the book has grown about 300 pages. The addition of Zeev Suraski as co-author can only be to the benefit of the quality of the information, particularly regarding PHP 5.
The book starts with the absolute rock bottom of PHP, the basic data types and operators through to efficiency, debugging and design patterns. Along the way it covers almost all aspects of PHP 5 with a readable reference style. The 'Core' in the title of this book is a key to understanding it. If you're looking for a book with all the code required to handle session management, or user logins and security (to mention two possibilities) then this isn't the book for you. If, however, you are after a book that more than adequately explains the power and nuances of PHP and programming in the language then this is a marvelous volume.
It's broken up into 5 sections: "Programming PHP," which covers the basics of data, control flow and I/O; "Functional Reference," which is 600 odd pages broken up into 12 chapters that seems to cover every PHP function (a check of three sub chapters showed every function mentioned on the topic at PHP.net was also in the book) and does it well with good explanation and code examples; "Algorithms," which details a number of methods of performing routine tasks such as sorting, parsing and generating graphics; and "Software Engineering," devoted to design, efficiency and design patterns; and finally, there are a seven excellent appendices.
Taken as a whole it does a good job of covering the whole language and the ways of using it.
I can imagine it would make a good companion volume to my other favourite PHP volume, PHP and MySQL Web Development, which tends more towards recipes and leaves out the encyclopedic coverage of this book.
Leon Atkinson has a good web page for the book that includes a link to download all the code and examples, a link to the Prentice Hall page for those wanting an example chapter or a look at the Table of Contents and some other reviews. His site also has a page for the inevitable errata, currently blank. While I did find only one typo (not in example code) I can't claim to have read every page or run all the code examples.
I'd recommend this volume to anyone who wanted a comprehensive guide to PHP 5. It is probably useful at almost all levels.
on February 19, 2004
First, I'll admit that I'm biased against PHP because it's such a haphazard language. I was frustrated to no end to find out that they made a huge change to the object model with this PHP 5. But, since it's helpful to know PHP, I figured I would grab a book that was written by the authoritative gurus on PHP. With that having been said ...
What a joke! This isn't a programming book, it's a memoir! The authors explain PHP only to the extent to which it allows them to glorify themselves and the open source community (or as I like to call it: the confoundingly elitist hippy brigade.
Part 1 is actually the most useful part of this useless book. It walks you through the basics of the language. Thankfully, it has the most examples so you can do some real learning instead of listening to their pie-in-the-sky abstraction ideas. Part 2 calls itself a "functional reference", but it's anything than that. Each entry gets a paragraph talking about the language element. But, there's no indication of how to use it -- not even an example in most cases! Furthermore, part 3 and part 4 of the book are totally useless. Yes, they explain how to code a nice sorting algorithm, use nifty graphics manipulators, and how to write efficient code. But, honestly? If you were writing code in another language, you could buy modules for sorting and graphics for about $10 each that are far easier to use and more powerful than what's given in PHP. This book doesn't cover all the bases it should about writing code well - they dedicate anout 25 pages to the subject. And, if you're concerned about writing efficient code and building sorting routines from scratch yourself, go take a class and learn to do it right! (Hint: this book actually shows you how to do it INcorrectly on occasion.)
Save your money and try one of the "customers who bought this also bought" because that will tell you where customers turned to after this book completely disappointed them.
on February 18, 2004
I read the reviews before I bought the book. Sadly, I should have listened to the negative reviews. This book is NOT what it's advertised. I agree with the other reviewer: this is not a "CORE" book. Rather, it's more of an intellectual discussion of PHP on an abstract level. If you know the syntax, and want to learn how to apply it, then this book may be to your liking. However, DO NOT expect a reference guide!!! This book does not take the time to document the language. This isn't the kind of book you keep at your side while you code. You read it, absorb it's wisdom, and then proceed.
Why did I give the book two stars? Two reasons: 1. Because a core book should be just that: core material (i.e.: a reference, a code example, and a best practices guide.) This book is a conceptual teaching guide. Which is fine, but, I already know how to code. I wish this book would have been more direct to begin with. 2. The book is a rather boring read. I once agree with the other reviewer: I could have done without all the self-congratulatory text. As for the meat of the book, it was rather amateurish and cutesy, the way Japanese instruction booklets are. All in all, mostly disappointing.
on February 15, 2004
I have to agree with the negative reviews - this book just doesn't make any sense. First of all, why call it "Core" PHP? There's no core to this book. There's no syntax description, no documentation on arguments, returned values, or errors. There's very few examples of code, even the new version 5 code. This book should have been called "Addendum to a previous reference" instead of Core.
Personally, I distaste the format and style of the book. The first chapter glorifies the history of PHP to make you think it's bigger than Jesus. Guess what, folks? PHP has a long way to go before it's deserving of such praise. If I wanted an editorial, I would've gone to the "fiction" section of my bookstore.
Lastly, the positive reviews on this site are obviously written either by the authors or by people with affiliations with this publications. Come on, guys. Shouldn't you spend less time pumping up your diatribe novel, and more time writing a useful book on a fledgling programming language?
on February 12, 2004
This book achieves what it sets out to: A core reference on php. It won't teach you how to implement a silly pet store with a mysql database. But it will be a useful resource and a great reference to the language, functions sorted according to meaningful chapters with excellent poignant examples, and how-to's for common real-world problems, then this is for you. If you want to learn how to develop a web application according how someone else thinks you should design it, then go for the more popular tutorial-style books. If you want a desktop reference that you can rely on when you need the facts then this is it.
The reviewers who gave this low stars probably want their hand held thru a join the dots web project. If you are a serious PHP web application designer who values creativity and flexibility and wants more than a tutorial, you'll be impressed with Core PHP, 3rd Edition. It also covers PHP 5 improvements to the language as well. Maybe thats why the script kiddies are wary because PHP is moving away from procedural script-in-html mode into the Object Oriented world of component driven design.
There are great chapters on software engineering, efficiency, integration, and design patterns that will be invaluable to the PHP architect. As are the full descriptions of configuration variables and interacting with your environment.
on January 16, 2004
This is a fantastic book if you already know PHP. If you're like me -- transitioning from ASP to PHP -- this book is completely, utterly, worthless.
In order to understand the programming syntax, you must already be familiar with C. The book does a poor job of acclimating you to it's backwards, excessively abbreviated method of coding.
The vast majority of functions and methods described in the book have absolutely NO CODE EXAMPLES whatsoever. Many functions get exactly one small paragraph of description, without any detail of input, output or expected return data. A great example is the $_REQUEST pregen variable. How do you use it? Don't rely on this book to figure it out. There's NO DOCUMENTATION. What if you want to know how to connect to a MySQL server that isn't your "localhost"? This book doesn't even touch the syntax of mysql_connect. All of the examples in the book use "localhost" over and over again. Apparently, the good people at PHP don't think that you would ever ever in a million years connect to a MySQL server that isn't on your local system. Oops.
Furthermore, the Index is also worthless. Referring to the previous example, let's say you wanted to find what little information there is on the $_REQUEST pregen variable. If you look under "R", you won't find it. If you look under "$", you still won't find it. Somehow, you must magically know to look under "pregenerated variables" in order to find the index entry for $_REQUEST. That's great if you already knew that you were looking for something that was classified as a pregen variable. But, if you didn't know that tidbit of information, then this book left you high & dry.
This book makes great leaps of abstraction. They explain a small amount of syntax, and expect you to re-apply that syntax haphazardly when you write your code. Here is a brief allegory of their style of explanation, so you understand what we're talking about:
1. The universe is made from sub-atomic particles.
2. Sub-atomic particles make atoms.
3. From this, we can understand how Man creates skyscrapers.
That's how this insipid book reads from cover to cover.
The second half of this book ignores the concept of "reference manual" completely, and dives into program theory. It's a great computer science 101 refresher course on sorting algoriths and program structure, and even coding styles!
To sum up, if you already know PHP and you enjoy a trip through abstracted fantasy land, buy this book. On the other hand, if you exist in reality and you want to learn how to write PHP code, skip this useless paperweight.
on January 7, 2004
This time around Leon Atkinson teamed up with Zeev Suraski, one of the PHP project's team members and co-developer of the Zend Engine -- the scripting language that powers PHP. Structurally, the book is laid out very much the same as it's predecessor. There are four parts followed by several appendices. This format works well and is easy to navigate. The layout has a more polished look to it.
One of the many things I really enjoy about this book are the examples that are provided, they are concise but well thought out and usually show related functions that help with code generation. As a heavy Index user I am happy to say that this one doesn't disappoint. Some effort was put into organizing this information, for people like me, to thumb through and find things quickly. The book has been updated to include the full features for PHP 5. This is good for those of us who have dealt with feature creep over the years and get stumped by subtle changes in the way functions work.
I highly recommend this book. It is a great resource for the PHP programmer regardless of skill level.
on October 30, 2003
How can you convey the power, the flexibility and the simplicity of a relatively new language without loosing any of your audiences, beginner to advanced, along the way?
I have been a programmer for over 6 years, but have never had the pleasure of doing anything with PHP before I started reading this book. I must say, I was totally impressed after I had finished reading Leon's book. The PHP language itself has grown tremendously over the past 8 years or so, and I can certainly see why it is so appealing to users of all levels. The author of the book, Core PHP Programming, does an amazing job explaining the nuance of PHP that any level READER can understand the topic and does whatever it is that he or she is after - which would be designing a dynamic web site in this case.
Leon starts the book with the paraphrase "...answer is that PHP is better" and goes on to explain why that is the case. His answers would compel any PHP user or potential users:
1) PHP is free
2) PHP runs on UNIX, Windows, and Mac OS X
3) PHP is modifiable
4) PHP was written for Web Page creation
5) Support for PHP is free and readily available
6) PHP is popular
7) Programming skills developed in other structured languages can be applied to PHP
By the end of page 11 (5 pages into chapter 1) the reader is hooked and wants to read on to find out what all Leon is talking about. All the key phrases are there: free, extendible, lots of supports, and ease of use.
By the end of Chapter 7 or page 160, you are ready to rock. By now, you know what PHP is all about and have learned its syntax, features, and have even looked (or hopefully written) some code.
Dynamic Function Calls ends chapter 4. This section CLEARLY shows to any programmer how powerful PHP really is and how easy it would be for anyone to utilize that power. Dynamic Function Call is very difficult to implement in Java (I don't know of any way to do in C++ actually - specially in one line of code). In one line of code PHP is able to accomplish this task. Very powerful stuff...
I was personally very impressed with the OO features of the language, which was depicted very well in chapter 6. I also need to say that Leon's introduction to Objects and Classes are very easy to understand for users new to the topic.
For the next few hundred pages, in Part II of the book - Functional Reference, various functions that PHP supports are shown and each one is explained in a great detail. Most of the functions have also been followed by an example that shows the usage each function just described. These chapters are very good reference even for the advanced users as PHP has grown so much that keeping track and memorizing of all the functions would be nearly impossible.
Leon ends the book with a section called Software Engineering. The two chapters that I liked in this section were the design and the design patterns chapters. Chapter 27, Design, is basic software engineering practices in a nutshell. Something that took me over two graduate level courses to cover, the author gives an overview in about 25 pages. I recommend this chapter to any novice programmer. The chapter on Design Patterns is simply put, great. 4 Design Patterns from the popular GoF book are described:
A reader can benefit the specific examples that are given in this chapter as they apply to Web site design and implementation. The examples given are reusable and would benefit any user of PHP.
Throughout the book the author does a very good job at showing the reader what the differences between PHP and other languages are. I think PHP would be a very good first language to learn b/c it has all the features of other popular scripting languages such as Perl and structural/OO languages such as Java and C/C++.
on October 9, 2003
In what seems like a dazzingly short time, PHP has grown from a simple little language that dynamically generates web pages to a fully fledged object oriented language. Now available in its fifth major revision, PHP code looks so much like C, with the added benefit of being OO. PHP is still very specialised, confined to essentially web server applications. While it is true that PHP is no longer strictly confined to this, the de facto reality is that the vast majority of applications, and the concomitant employment prospects, are in the context of web servers.
Clearly, if you are a web programmer, knowing PHP is a big plus. A hardcore way of doing this is to use the online documentation scattered throughout the web, and learn by downloading and analysing code examples. PHP veterans, including maybe the authors, probably did this. Nothing better at the time. While it works for some, this approach is awkward to many, and is quite ad hoc. The danger is in learning quick kludges as opposed to methodically designing and coding, with a full appreciation of the language's extent. Luckily, as PHP has matured, you can turn to this book for a logical pedagogy.
The treatment is exhaustive and shows starkly how far PHP has come. For example, you can use all the major encryption algorithms (Rijndael, Serpent, DES...) as extensively and easily as though you were coding in C. On another tack, the image analysis routines now handle all the important image formats (GIF, JPEG, TIFF...). The book displays the breadth of such computing topics now available, and the wealth of library routines in each topic describes the depth of the treatment.
Are you familiar with Fortran and the IMSL mathematical package so often associated with it? Or with C++ and its standard template library? Or C and the Numerical Recipes routines? If so, this book lets you appreciate that intellectually, PHP now ranks with those luminaries.