Slashdot Mirror


PHP MySQL Website Programming

Alan Knowles writes "Ever started looking for a PHP script to solve that problem in your company - Managing the passwords, keeping track of equipment, or making information available on the web. Normally after a few hours of hunting, you track down something that looks close to what you want, you download it, get it going, then start digging around the code. At this point, you cringe in fear of two problems, the spaghetti mess that you are about to deploy, the ongoing maintenance nightmare and the horrors of modifying it to fit your needs. Well this book isn't going to solve these issues, but at least if a few more of those budding open source developers read it, the world would be a better place." Read on for the rest of this review; Yes, the book is still available. PHP MySQL Website Programming Problem - Design - Solution author Chris Lea, Mike Buzzard, Jessey White-Cinis, Dilip Thomas pages 504 publisher Apress rating 9 reviewer Alan Knowles ISBN 1861008279 summary Effective learning through the Problem, Design, Solution approach

In brief: This book takes you through designing a PHP website, featuring the usual bundle of generic features, simple content management, adverts, forums and an on-line shop. It's not intended as a definitive codebase of the absolute best design, but fills a big gap between trying to develop PHP with functions and lots of include files, and the full Computer Science bible of Design patterns.

For those people (and there's a lot of them) who have grown from Word macros and Visual Basic, then had a lot of fun learning PHP, this book provides an excellent gentle path towards using classes in PHP and applying them to real world problems. Like a lot of Wrox books, it's jam-packed with code, with a good flow of new information in each chapter.

What I liked

As a programmer who many years ago swore blind that there was no reason for using classes and objects on websites (the equivalent to a misspent youth), this book gives good clear examples on how they can provide advantages over just 'include' and a few functions.

The book is enjoyable to read; it focuses on the step-by-step delivery of a very dynamic website,starting with the basics of designing the file layout and how the files will work together. It then goes into more detail on delivering each feature, provides enough general ideas to help most PHP enthusiasts and budding developers understand the basics and advantages of OOP programming (although there are a few functions thrown in to ease in those not conversant with OOP).

The website that you learn to create (using the Problem - Design - Solution approach) is available for you to see online here.

Although a lot of the code is focused around implementing a reasonably simple set of Patterns, Data Objects and Page execution scripts, there are a few gems in there.

  • Utilizing quite a few PEAR classes including the Database abstraction layer, Mail Sending.
  • A nice section on the basics of RSS and XML, not to detailed level, but a good warmup for anyone coming from a System Admin or Simple Visual Basic level.

Ok, It's not for everyone. If you've done any Java or C++, this book is going to be a bit below you. Design Patterns are not mentioned directly in the book, although a number are implemented. The book misses out on quite a few important ideas, like templating php sessions in the body, although it does touch on the subject near the end. Given the target audience, of PHP of beginner to intermediate level, it does have a few unusual code styles in places, which hopefully the readers will not over-apply.

What you will learn from this book
  • Elements required to build a useful 3-tier web application
  • Design and construct an interactive User Interface (UI)
  • Provide a CMS environment to manage content securely and extensively
  • Create visitor accounts, to register and manage unique site visitors
  • Build a simple news management and delivery system
  • Create a syndication application
  • Generate a sustainable revenue stream from advertising
  • Implement an online visitor poll
  • Create a fully featured discussion forum
  • Build an online shopping cart system with checkout features
Summary While personally this isn't the book for me, as I've learned far too much PHP for my own good, it's the book you wish half the sourceforge PHP project coders would read before starting their project, saving you a wasted download. In the end it's ideally suited to a PHP website development training course, and could almost be the course book. (However, it's better written than most of the school books I remember).

You can purchase PHP MySQL Website Programming from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

4 of 160 comments (clear)

  1. Re:PHP Design by Mr+Bill · · Score: 5, Informative
    The problem is that with security, the very best possible way to keep your site secure is to a) purify incoming data and b) keep your source to yourself unless you want people to let you know where the bugs/holes are.

    The problem with this philosophy is that it allow you to be sloppy with your code. You might start out with great intentions of keeping the code clean, but without the fear of ridicule associated with peer review, you will start to slip to catch that deadline.

    Knowing other people are going to see the code is the best way to keep a programmer in line. An artist is not going to show all the crap they come up with to the world. They pick their best work and share it because they are proud of it.

    Now if only I could adhere to this philosophy myself...

  2. Not just a PHP problem by phorm · · Score: 4, Informative
    With understanding that this article is a reference to a PHP book (and the more books to educate the undereducated... the better), the problem with shite code samples extends far beyond PHP.

    Part of the reason it applies so readily to this language, however, is the conceived ease-of-use. A lot of newbie users swap to PHP, pick up some bad samples, combine with existing bad habits they never grow out of, and eventually consider themselves "knowledgable" just to to long-term use. However, experience in duration != experience in education (standardization, etc).

    To shift the blame from PHP, I've been working on attempting to integrate a 3rd-party web-based system (Perl-base) into my place of work. At first, I looked at the code and estimated that I could do it relatively easily. What I neglected to realize, is that while some of the coding was done reasonably well... this seems to be a multi-person project and other sections are nightmarishly and un-necessarily complex.

    We need an article on "signs that you're working with bad code." So far I've found...

    • Poor indentation
    • Low commentation (for godsakes, use # and throw in at least a few words every now and then
    • Really ambiguous variable names: $x1, $x2, $blah, $stuff
    • Odd information passing: As a delimited string...which is interpreted differently based on certain conditions (contents of string may vary)
    Maybe we need a "warning signs" section. Anyone got one?
  3. PHP frameworks by tetranz · · Score: 4, Informative

    There are several promising PHP frameworks in development.

    Ports of Struts
    PHP.MVC
    Phrame

    And ezPublish 3 which is primarily a CMS but can also be used as a general purpose framework.

    IMHO for one of these to really take off (like Struts) is what professional PHP development needs.

  4. Re:Why WOULD you use classes and objects? by ajs · · Score: 4, Informative
    You missed the point of using an OO design model entirely. In fact, if these are the reasons you're using OO methodologies (much less language tools), you should probably stop.
    You cite:
    • Portable code [...] reuse components -- Beyond the fact that the word "portable" is mis-used here, you're invoking the myth of OO reuse. Far better men (and women) than I have refuted this point, but I'll just summarize by saying that code reuse is not a feature of OO programming. It's a feature of modularity and quality of design. It's also very, very rare outside of library and toolkit design where it's always been, before and after the OO craze.
    • Once you've got your objects [...] plug em in -- That's called modularity. Not an OO feature, but a design feature.
    • Uhm, do I really have to explain the benefits of object oriented programming? -- No, they're well understood... er, or so I thought...
    So what are they?

    They're the building-blocks of OO, and the benefit is the flexibility that those building blocks give you. If you're a good programmer who writes procedural code, you'll usually find these features seeping into your programs anyway. Languages with OO features just make it easier to apply them. They are polymorphism (you know how to deal with a "car", so you don't have to read the manual to start up a "compact car"), inheritance (a "Pinto" is a "compact car" with some special differences like its own version of the "react to rear-impact" event) and encapsulation (a "car" has a "dashboard", a complex object with behaviors of its own). IMHO, polymorphism is the most powerful and valuable of these, though many will focus on inheritance, which is deeply tied to polymorphism anyway, so YMMV.