image

Contents

Introduction

Part I: Getting Up and Running with PHP

Chapter 1: Introducing PHP

What Is PHP?

Why Use PHP?

The Evolution of PHP

What’s New in PHP 5.3

Summary

Chapter 2: Your First PHP Script

Installing PHP

Other Ways to Run PHP

Creating Your First Script

Summary

Exercise

Part II: Learning the Language

Chapter 3: PHP Language Basics

Using Variables in PHP

Understanding Data Types

Operators and Expressions

Constants

Summary

Exercises

Chapter 4: Decisions and Loops

Making Decisions

Doing Repetitive Tasks with Looping

Mixing Decisions and Looping with HTML

Summary

Exercises

Chapter 5: Strings

Creating and Accessing Strings

Searching Strings

Replacing Text within Strings

Dealing with Upper- and Lowercase

Formatting Strings

Summary

Exercises

Chapter 6: Arrays

The Anatomy of an Array

Creating Arrays

Accessing Array Elements

Looping Through Arrays with foreach

Working with Multidimensional Arrays

Manipulating Arrays

Summary

Exercises

Chapter 7: Functions

What Is a Function?

Why Functions Are Useful

Calling Functions

Working with Variable Functions

Writing Your Own Functions

Working with References

Writing Recursive Functions

Summary

Exercises

Chapter 8: Objects

What Is Object-Oriented Programming?

Advantages of OOP

Understanding Basic OOP Concepts

Creating Classes and Objects in PHP

Creating and Using Properties

Working with Methods

Object Overloading with —get(), —set(), and —call()

Using Inheritance to Extend the Power of Objects

Constructors and Destructors

Automatically Loading Class Files

Storing Objects as Strings

Determining an Object’s Class

Summary

Exercises

Part III: Using PHP in Practice

Chapter 9: Handling HTML Forms with PHP

How HTML Forms Work

Capturing Form Data with PHP

Dealing with Multi-Value Fields

Generating Web Forms with PHP

Storing PHP Variables in Forms

Creating File Upload Forms

Redirecting after a Form Submission

Summary

Exercises

Chapter 10: Preserving State With Query Strings, Cookies, and Sessions

Saving State with Query Strings

Working with Cookies

Using PHP Sessions to Store Data

Summary

Exercises

Chapter 11: Working with Files and Directories

Understanding Files and Directories

Getting Information on Files

Opening and Closing Files

Reading and Writing to Files

Working with File Permissions

Copying, Renaming, and Deleting Files

Working with Directories

Building a Text Editor

Summary

Exercise

Chapter 12: Introducing Databases and SQL

Deciding How to Store Data

Understanding Relational Databases

Setting Up MySQL

A Quick Play with MySQL

Connecting to MySQL from PHP

Summary

Exercises

Chapter 13: Retrieving Data from MySQL with PHP

Setting Up the Book Club Database

Retrieving Data with SELECT

Creating a Member Record Viewer

Summary

Exercises

Chapter 14: Manipulating MySQL Data with PHP

Inserting Records

Updating Records

Deleting Records

Building a Member Registration Application

Creating a Members’ Area

Creating a Member Manager Application

Summary

Exercises

Chapter 15: Making Your Job Easier with PEAR

Installing PEAR Packages

Using a PEAR Package

Creating HTML Tables with the HTML_Table Package

Web Forms the Easy Way with HTML_QuickForm

Summary

Exercises

Chapter 16: PHP and the Outside World

Working with Dates and Times

Working with HTTP

Getting Information from the Web Server

Sending Email

Summary

Exercises

Chapter 17: Generating Images with PHP

Basics of Computer Graphics

Creating Images

Manipulating Images

Using Text in Images

Summary

Exercises

Chapter 18: String Matching with Regular Expressions

What Is a Regular Expression?

Pattern Matching in PHP

Exploring Regular Expression Syntax

Finding Multiple Matches with preg_match_all()

Searching Arrays with preg_grep()

Replacing Text

Altering Matching Behavior with Pattern Modifiers

Splitting a String with a Regular Expression

Summary

Exercises

Chapter 19: Working with XML

What Is XML?

XML Document Structure

Reading XML Documents with PHP

Writing and Manipulating XML Documents with PHP

Doing XML the Easy Way with SimpleXML

Working with XSL and XSLT

Summary

Exercises

Chapter 20: Writing High-Quality Code

Writing Modular Code

Using Coding Standards for Consistency

Documenting Your Code

Checking Input and Encoding Output

Handling Errors

Separating Application Logic from Presentation Logic

Automated Code Testing with PHPUnit

Summary

Exercises

Appendix A: Solutions to Exercises

Appendix B: Configuring PHP

Appendix C: Alternatives to MySQL

Appendix D: Using PHP from the Command Line

Index

Wiley End User License Agreement

Image

This book is dedicated to Cat, my rock in stormy seas, and Zack, my sunshine on a cloudy day.

About the Author

Matt Doyle, born and bred in England, discovered the joys of computing from an early age, thanks to his mom’s prudent decision to invest in a rusty old build-it-yourself computer with a whopping 4K of RAM. Since then, he’s never looked back, gaining a B.Sc. in Computer Science and moving into the IT industry.

After working at various companies in such disparate roles as IT manager, C programmer, software tester, Web designer, and Web developer, Matt decided it was time to start his own business. In 1997 he co-founded ELATED (www.elated.com)— a company dedicated to helping people build great Web sites.

Cutting his Web development teeth on C, Perl, and JavaScript, Matt has worked with a few other Web programming languages over the years, including Java, ASP, and Python. PHP is his current language of choice when building dynamic Web sites.

In 2002, deciding he’d had enough of the freezing English weather, he retreated to the sunny shores of Sydney’s Northern Beaches in Australia with his wife, Cat. They now live in the New South Wales Southern Highlands (which, ironically, has rather English weather) with their son, Isaac.

Credits

Executive Editor

Carol Long

Development Editor

Ed Connor

Technical Editor

Ben Schupak

Production Editor

Rebecca Anderson

Copy Editor

Kim Cofer

Editorial Manager

Mary Beth Wakefield

Production Manager

Tim Tate

Vice President and Executive Group Publisher

Richard Swadley

Vice President and Executive Publisher

Barry Pruett

Associate Publisher

Jim Minatel

Project Coordinator, Cover

Lynsey Stanford

Proofreader

Nate Pritts, Word One

Indexer

J & J Indexing

Cover Image

© Purestock/Punchstock

Acknowledgments

This book would not have been possible without the help and support of my wife Cat and my ELATED partner-in-crime Simon. Thank you both so very much for all that you have done. Thanks also go to the editors and managers at Wiley — particularly Ed Connor and Jenny Watson — for all their hard work helping to knock this book into shape.

Introduction

Welcome to Beginning PHP 5.3! This book teaches you how to build interactive Web sites and applications using PHP, one of the most popular Web programming languages in use today. Using PHP you can create anything from a simple form-to-email script all the way up to a Web forum application, a blogging platform, a content management system, or the next big Web 2.0 sensation. The sky is the limit!

As programming languages go, PHP is easy to learn. However, it’s also a very extensive language, with hundreds of built-in functions and thousands more available through add-ons to the PHP engine. This book doesn’t attempt to guide you through every nook and cranny of PHP’s capabilities. Instead, it aims to give you a good grounding in the most useful aspects of the language — the stuff you’ll use 99 percent of the time — and to teach you how to create solid, high-quality PHP applications.

Who This Book Is For

This book is intended for anyone starting out with PHP programming. If you’ve previously worked in another programming language such as Java, C#, or Perl, you’ll probably pick up the concepts in the earlier chapters quickly; however, the book assumes no prior experience of programming or of building Web applications.

That said, because PHP is primarily a Web technology, it will help if you have at least some knowledge of other Web technologies, particularly HTML and CSS. Fortunately, these two technologies are easy to pick up. You can find many useful HTML and CSS tutorials at:

Many Web applications make use of a database to store data, and this book contains three chapters on working with MySQL databases. Once again, if you’re already familiar with databases in general — and MySQL in particular — you’ll be able to fly through these chapters. However, even if you’ve never touched a database before in your life, you should still be able to pick up a working knowledge by reading through these chapters.

What This Book Covers

This book gives you a broad understanding of the PHP language and its associated technologies. You explore a wide range of topics, including:

Also, as you'd imagine, this book covers the new features added to PHP in version 5.3. However, if you're still using an older version of PHP, don't panic – the vast majority of the book applies to all versions of PHP.

How This Book Is Structured

The chapters in this book are laid out in a logical order, explaining basic programming concepts first, then building on those concepts in later chapters when covering more advanced topics. As a general rule, each chapter builds on the knowledge gained in previous chapters, so you shouldn’t need to jump around the book too much. However, if you’re already familiar with some of the basic ideas of PHP, you’ll find you can easily dip into later chapters if you’re looking for specific information.

Each chapter contains a couple of exercises at the end to test your knowledge and expand on some of the ideas presented in the chapter. You can find solutions to the exercises in Appendix A.

This book is split into three main parts. Part I, “Getting Up and Running with PHP,” introduces PHP in more detail, and walks you through installing PHP and writing a simple PHP script. Part II, “Learning the Language,” teaches you the fundamentals of the PHP language — essential reading for building PHP scripts. Finally, Part III, “Using PHP in Practice,” shows you how to create real-world PHP applications, covering a wide range of concepts and including lots of useful example scripts.

Here’s a chapter-by-chapter breakdown of the book to help you decide how best to approach it.

Chapter 1 introduces you to PHP. You see how PHP compares to other Web programming languages, look at how PHP has evolved over the years, and briefly explore the new features in PHP version 5.3.

Chapter 2 walks you through installing a copy of the PHP engine on Ubuntu Linux, Windows, and Mac OS X; looks at other ways you can install or use PHP; and shows you how to write a simple PHP script.

Chapter 3 looks at some basic PHP language concepts. You look at variables, data types, operators, expressions, and constants.

Chapter 4 shows you how to change the flow of your scripts by creating decisions and loops. You explore the if, else, and switch statements; the ternary operator; and the do, while, for, break, and continue statements. You also learn how to nest loops, and how to mix decisions and looping with blocks of HTML.

Chapter 5 explores PHP’s handling of strings, or sequences of characters. You learn how to create strings; how to retrieve characters from a string; and how to manipulate strings with functions such as strlen(), substr(), strstr(), strpos(), str_replace(), and printf(), to name but a few.

Chapter 6 covers arrays — variables that can hold multiple values. You learn the difference between indexed and associative arrays, and find out how to create arrays and access their individual elements. The rest of the chapter focuses on array manipulation, including functions such as print_r(), array_slice(), count(), sort(), array_merge(), and list(). You also learn how to create foreach loops, as well as how to work with multidimensional arrays.

Chapter 7 looks at the concept of functions — blocks of code that you can use again and again. You look at how to call built-in functions, and how to work with variable functions. You also study how to create your own functions, including defining parameters, returning values, understanding scope, and using anonymous functions. Other function-related topics such as references and recursion are also explored.

Chapter 8 delves into the world of object-oriented programming. You look at the advantages of an object-oriented approach, and learn how to build classes, properties, and methods, and how to create and use objects. You also explore more advanced topics such as overloading, inheritance, interfaces, constructors and destructors, autoloading, and namespaces.

Chapter 9 shows you how to use PHP to create interactive Web forms. You learn how to create HTML forms, how to capture form data in PHP, and how to use PHP to generate dynamic forms. You also explore file upload forms and page redirection.

Chapter 10 looks at how to preserve an application’s state between page views. You explore three different strategies: query strings, cookies, and PHP sessions. The chapter includes an example user login system.

Chapter 11 takes a look at PHP’s file and directory handling functions. You learn how to open and close files; how to find out more information about a file; how to read from and write to files; how to work with file permissions; how to copy, rename, and delete files; and how to manipulate directories. The chapter includes a simple text editor as an example.

Chapters 12–14 explore databases in general and MySQL in particular, and show how to work with MySQL databases using PHP. You learn some database and SQL theory; look at how to connect to MySQL from PHP; and study how to retrieve, insert, update, and delete data in a MySQL database.

Chapter 15 introduces PEAR, the PHP Extension and Application Repository. It’s a large collection of reusable code modules that can really help to speed up your application development. You look at how to install and use PEAR packages, and explore three useful packages: Net_UserAgent_Detect, HTML_Table, and HTML_QuickForm.

Chapter 16 looks at various ways that your PHP applications can interact with the outside world. You take a detailed look at date and time handling, including various useful built-in date functions, as well as the DateTime and DateTimeZone classes. You also look at how to work closely with HTTP request and response headers, how to retrieve Web server information, and how to send email from within your scripts.

Chapter 17 shows how you can use PHP to generate graphics on the fly. You study some computer graphics fundamentals, then look at how to create new images, as well as modify existing images. Along the way you explore colors, drawing functions, image formats, transparency, opacity, and generating text within images.

Chapter 18 looks at the power of regular expressions. These clever pattern-matching tools let you search for very specific patterns of text within strings. The chapter introduces regular expression syntax, and shows how to use PHP’s regular expression functions to search for and replace patterns of text. Lots of examples are included to make the concepts clear.

Chapter 19 explores XML — eXtensible Markup Language — and shows you how to manipulate XML from within your PHP scripts. You learn about XML and its uses, and look at various ways to read and write XML with PHP, including XML Parser, the XML DOM extension, and SimpleXML. You also take a brief look at XML stylesheets, including XSL and XSLT.

Chapter 20 wraps up the book with a discussion on good programming practices. You look at strategies for writing modular code; how to design and implement coding standards for consistency; ways to document your code; how to harden your applications against attack; how to handle errors gracefully; why it’s important to separate application from presentation logic; and ways to test your application code for robustness.

Appendix A contains answers to the exercises found throughout the book.

Appendix B looks at how to configure PHP, and lists all the configuration directives available.

Appendix C explores some alternative databases to MySQL that are supported by PHP.

Appendix D shows you how to use PHP to write command-line scripts, further enhancing the power and flexibility of your applications.

What You Need to Use This Book

To work through the examples in this book you’ll find it helpful to install, or have access to, a Web server running PHP. Because PHP runs happily on most operating systems, including Windows, Linux, and Mac OS X, you should have no trouble installing a Web server with the PHP engine on your setup. Chapter 2 contains easy instructions on how to install PHP and the Apache Web server on Windows, Linux, and the Mac. You can also use a remote Web server — for example, at your Web hosting provider — to run the example scripts.

Although this book covers PHP 5.3, the production version available at the time of writing was 5.2. Therefore some sections of the book — particularly Chapter 2 — contain references to version 5.2. However, as long as you install a version of PHP greater than 5.1 — whether that’s 5.2, 5.3, or later — you’ll be fine.

You’ll need a text editor to create and edit your PHP scripts, and many decent free editors are available. Windows has the Notepad editor built in, which is fine for small projects. On the Mac you can use TextEdit, or one of the command-line editors such as vi or Emacs. Again, on Linux you can use vi, Emacs, or another command-line editor, or install one of the graphical text editors available for Linux, such as Bluefish (http://bluefish.openoffice.nl/).

Using the Command Line

Some parts of the book — notably the chapters on databases, as well as Appendix D — make use of the command-line interface, or “shell,” to enter commands and run programs. This is a powerful tool for communicating with your system.

Before rich graphical environments came into common use, the only way to interact with computers was to type commands, one line at a time. You wanted to run a program? There was no icon to click — you typed the program’s name.

Many programs still make use of the command-line interface. For one thing, it’s a lot simpler to write them that way. What’s more, many people still find it easier to interact with the command prompt than with a mouse-driven windowed environment.

In order to access the command line, you need to do one of the following:

After you’ve called up the interface, you’ll probably be confronted by a nearly blank window, with just a snippet of text such as one of these:

$

%

C:/>

#

bash$

This is a command prompt or shell prompt, which is simply there to let you know that the interface is ready to receive instructions — prompting you for commands, in effect. It doesn’t really matter what the prompt looks like, just that you recognize it when it appears. In this book, the prompt is designated this way:

$

The book shows you any commands that you need to type after the prompt ($). The computer-generated output follows. For example:

$ ./hello.php

Hello, world!

$

Sometimes a different prompt is shown. For example, if you’re working with the MySQL command-line program, the following prompt will be shown:

mysql>

Conventions

To help you get the most from the text and keep track of what’s happening, we’ve used a number of conventions throughout the book.

Try It Out

The Try It Out section contains an exercise you should work through, following the text in the book.

The section includes one or more code listings, instructions on how to run the script and, often, a screen shot showing the script in action.

How It Works

After each Try It Out, the code you’ve typed will be explained in detail.

Notes, tips, hints, tricks, and asides to the current discussion are offset and placed in italics like this.

As for styles in the text:

Source Code

As you work through the examples in this book, you may choose either to type in all the code manually or to use the source code files that accompany the book. All of the source code used in this book is available for download at http://www.wrox.com. Once at the site, simply locate the book’s title (either by using the Search box or by using one of the title lists) and click the Download Code link on the book’s detail page to obtain all the source code for the book.

Because many books have similar titles, you may find it easiest to search by ISBN; this book’s ISBN is 978-0-470-41396-8.

Once you download the code, just decompress it with your favorite compression tool. Alternately, you can go to the main Wrox code download page at http://www.wrox.com/dynamic/books/download.aspx to see the code available for this book and all other Wrox books.

Errata

We make every effort to ensure that there are no errors in the text or in the code. However, no one is perfect, and mistakes do occur. If you find an error in one of our books, like a spelling mistake or faulty piece of code, we would be very grateful for your feedback. By sending in errata you may save another reader hours of frustration and at the same time you will be helping us provide even higher quality information.

To find the errata page for this book, go to www.wrox.com and locate the title using the Search box or one of the title lists. Then, on the book details page, click the Book Errata link. On this page you can view all errata that has been submitted for this book and posted by Wrox editors. A complete book list including links to each book’s errata is also available at www.wrox.com/misc-pages/booklist.shtml.

If you don’t spot “your” error on the Book Errata page, go to www.wrox.com/contact/techsupport.shtml and complete the form there to send us the error you have found. We’ll check the information and, if appropriate, post a message to the book’s errata page and fix the problem in subsequent editions of the book.

p2p.wrox.com

For author and peer discussion, join the P2P forums at p2p.wrox.com. The forums are a Web-based system for you to post messages relating to Wrox books and related technologies and interact with other readers and technology users. The forums offer a subscription feature to e-mail you topics of interest of your choosing when new posts are made to the forums. Wrox authors, editors, other industry experts, and your fellow readers are present on these forums.

At http://p2p.wrox.com you will find a number of different forums that will help you not only as you read this book, but also as you develop your own applications. To join the forums, just follow these steps:

1. Go to p2p.wrox.com and click the Register link.

2. Read the terms of use and click Agree.

3. Complete the required information to join as well as any optional information you wish to provide and click Submit.

4. You will receive an e-mail with information describing how to verify your account and complete the joining process.

You can read messages in the forums without joining P2P but in order to post your own messages, you must join.

Once you join, you can post new messages and respond to messages other users post. You can read messages at any time on the Web. If you would like to have new messages from a particular forum e-mailed to you, click the Subscribe to this Forum icon by the forum name in the forum listing.

For more information about how to use the Wrox P2P, be sure to read the P2P FAQs for answers to questions about how the forum software works as well as many common questions specific to P2P and Wrox books. To read the FAQs, click the FAQ link on any P2P page.

Part I

Getting Up and Running with PHP

Chapter 1: Introducing PHP

Chapter 2: Your First PHP Script

1

Introducing PHP

Welcome to the world of PHP, one of the Web’s most popular programming languages. According to Netcraft (www.netcraft.com), PHP was running on more than 20 million Web servers in July 2007 (http://www.php.net/usage.php). At the time of writing, it’s the fourth most popular programming language in the world according to TIOBE (http://www.tiobe.com/index.php/content/paperinfo/tpci/), beaten only by Java, C, and C++. With the introduction of version 5.3, there’s never been a better time to learn PHP.

In this chapter you:

What Is PHP?

PHP is a programming language for building dynamic, interactive Web sites. As a general rule, PHP programs run on a Web server, and serve Web pages to visitors on request. One of the key features of PHP is that you can embed PHP code within HTML Web pages, making it very easy for you to create dynamic content quickly.

What exactly does the phrase “dynamic, interactive Web sites” mean? A dynamic Web page is a page whose contents can change automatically each time the page is viewed. Contrast this with a static Web page, such as a simple HTML file, which looks the same each time it’s displayed (at least until the page is next edited). Meanwhile, an interactive Web site is a site that responds to input from its visitors. A Web forum is a good example — users can post new messages to the forum, which are then displayed on the site for all to see. Another simple example is a “contact us” form, where visitors interact with the page by filling out and sending a form, which is then emailed to the Webmaster.

PHP stands for PHP: Hypertext Preprocessor, which gives you a good idea of its core purpose: to process information and produce hypertext (HTML) as a result. (Developers love recursive acronyms, and PHP: Hypertext Preprocessor is a good example of one.)

PHP is a server-side scripting language, which means that PHP scripts, or programs, usually run on a Web server. (A good example of a client-side scripting language is JavaScript, which commonly runs within a Web browser.) Furthermore, PHP is an interpreted language — a PHP script is processed by the PHP engine each time it’s run.

The process of running a PHP script on a Web server looks like this:

1. A visitor requests a Web page by clicking a link, or typing the page’s URL into the browser’s address bar. The visitor might also send data to the Web server at the same time, either using a form embedded in a Web page, or via AJAX (Asynchronous JavaScript And XML).

2. The Web server recognizes that the requested URL is a PHP script, and instructs the PHP engine to process and run the script.

3. The script runs, and when it’s finished it usually sends an HTML page to the Web browser, which the visitor then sees on their screen.

The interesting stuff happens when a PHP script runs. Because PHP is so flexible, a PHP script can carry out any number of interesting tasks, such as:

And finally, once it’s finished processing, it can send a customized HTML Web page back to the visitor.

In this book you learn how to write scripts to do all of these, and more.

All these great features mean that you can use PHP to create practically any type of dynamic Web application you can dream of. Common examples of PHP scripts include:

Web scripting is certainly the mainstay of PHP’s success, but it’s not the only way to use the language. Command-line scripting — which was introduced in PHP 4 — is another popular application of PHP. (This topic is covered in Appendix D at the end of this book.) Client-side graphical user interface application development using GTK (the GNOME ToolKit) is another.

Why Use PHP?

One of the best things about PHP is the large number of Internet service providers (ISPs) and Web hosting companies that support it. Today hundreds of thousands of developers are using PHP, and it’s not surprising that there are so many, considering that several million sites are reported to have PHP installed.

Another great feature of PHP is that it’s cross-platform — you can run PHP programs on Windows, Linux, FreeBSD, Mac OS X, and Solaris, among others. What’s more, the PHP engine can integrate with all common Web servers, including Apache, Internet Information Server (IIS), Zeus, and lighttpd. This means that you can develop and test your PHP Web site on one setup, then deploy it on a different type of system without having to change much of your code. Furthermore, it’s easy to move your PHP Web site onto another server platform, if you ever need to.

How does PHP compare with other common Web programming technologies? At the time of writing, the following technologies are prevalent:

ASP and ASP.NET have a couple of other disadvantages compared to PHP. First of all, they have a commercial license, which can mean spending additional money on server software, and hosting is often more expensive as a result. Secondly, ASP and ASP.NET are fairly heavily tied to the Windows platform, whereas the other technologies in this list are much more cross-platform.

In summary, PHP occupies something of a middle ground when it comes to Web programming languages. On the one hand, it’s not a general-purpose language like Python or Ruby (although it can be used as one). This makes PHP highly suited to its main job: building Web sites. On the other hand, PHP doesn’t have a complete Web application framework like ASP.NET or Ruby on Rails, meaning that you’re left to build your Web sites “from the ground up” (or use add-on extensions, libraries, and frameworks).

However, this middle ground partly explains the popularity of PHP. The fact that you don’t need to learn a framework or import tons of libraries to do basic Web tasks makes the language easy to learn and use. On the other hand, if you need the extra functionality of libraries and frameworks, they’re there for you.

Another reason for PHP’s popularity is the excellent — and thorough — online documentation available through www.php.net and its mirror sites.

In the past, PHP has been criticized for the way it handled a number of things — for example, one of its main stumbling blocks was the way in which it implemented object support. However, since version 5, PHP has taken stock of the downfalls of its predecessors and, where necessary, has completely rewritten the way in which it implements its functionality. Now more than ever, PHP is a serious contender for large-scale enterprise developments as well as having a large, consolidated base of small- to medium-sized applications.

The Evolution of PHP

Although PHP only started gaining popularity with Web developers around 1998, it was created by Rasmus Lerdorf way back in 1994. PHP started out as a set of simple tools coded in the C language to replace the Perl scripts that Rasmus was using on his personal home page (hence the original meaning of the “PHP” acronym). He released PHP to the general public in 1995, and called it PHP version 2.

In 1997, two more developers, Zeev Suraski and Andi Gutmans, rewrote most of PHP and, along with Rasmus, released PHP version 3.0 in June 1998. By the end of that year, PHP had already amassed tens of thousands of developers, and was being used on hundreds of thousands of Web sites.

For the next version of PHP, Zeev and Andi set about rewriting the PHP core yet again, calling it the “Zend Engine” (basing the name “Zend” on their two names). The new version, PHP 4, was launched in May 2000. This version further improved on PHP 3, and included session handling features, output buffering, a richer core language, and support for a wider variety of Web server platforms.

Although PHP 4 was a marked improvement over version 3, it still suffered from a relatively poor object-oriented programming (OOP) implementation. PHP 5, released in July 2004, addressed this issue, with private and protected class members; final, private, protected, and static methods; abstract classes; interfaces; and a standardized constructor/destructor syntax.

What’s New in PHP 5.3

Most of the changes introduced in version 5.3 are relatively minor, or concern advanced topics outside of the scope of this beginner-level book. In the following sections you take a brief look at some of the more significant changes that might concern you, particularly if you’re moving up from PHP 5.2 or earlier.

Namespaces

The biggest new feature in PHP 5.3 is support for namespaces. This handy feature lets you avoid naming clashes across different parts of an application, or between application libraries.

Namespaces bear some resemblance to folders on a hard disk, in that they let you keep one set of function, class and constant names separate from another. The same name can appear in many namespaces without the names clashing.

PHP 5.3’s namespace features are fairly comprehensive, and include support for sub-namespaces, as well as namespace aliases. You’ll learn more about using namespaces in Chapter 20.

The goto Operator

PHP 5.3 also introduces a goto operator that you can use to jump directly to a line of code within the same file. (You can only jump around within the current function or method.) For example:

goto jumpToHere;

echo 'Hello';

jumpToHere:

echo 'World';

Use goto sparingly — if at all — as it can make your code hard to read, as well as introduce thorny programming errors if you’re not careful. However, it can be useful in some situations, such as breaking out of deeply nested loops.

Nowdoc Syntax

In PHP 5.3 you can quote strings using nowdoc syntax, which complements the existing heredoc syntax. Whereas heredoc-quoted strings are parsed — replacing variable names with values and so on — nowdoc-quoted strings are untouched. The nowdoc syntax is useful if you want to embed a block of PHP code within your script, without the code being processed at all.

Find out more about nowdoc and heredoc syntax in Chapter 5.

Shorthand Form of the Ternary Operator

The ternary operator — introduced in Chapter 4 — lets your code use the value of one expression or another, based on whether a third expression is true or false:

( expression1 ) ? expression2 : expression3;

In PHP 5.3 you can now omit the second expression in the list:

( expression1 ) ?: expression3;

This code evaluates to the value of expression1 if expression1 is true; otherwise it evaluates to the value of expression3.

Advanced Changes

If you’re familiar with earlier versions of PHP, or with other programming languages, then you might be interested in some of the new advanced features in PHP 5.3. As well as the simpler changes just described, PHP 5.3 includes support for powerful programming constructs such as late static bindings, which add a lot of flexibility to static inheritance when working with classes, and closures, which allow for true anonymous functions. It also introduces an optional garbage collector for cleaning up circular references. (Since these are advanced topics, they won’t be covered any further in this book.)

Some of the nastier aspects of earlier PHP versions — namely Register Globals, Magic Quotes and Safe Mode — are deprecated as of version 5.3, and will be removed in PHP 6. Attempting to use these features results in an E_DEPRECATED error (the E_DEPRECATED error level is also new to 5.3).

You can view a complete list of the changes in PHP 5.3 at http://docs.php.net/migration53.

Summary

In this chapter you gleaned an overview of PHP, one of the most popular Web programming languages in use today. You learned what PHP is, and looked at some of the types of Web applications you can build using it. You also explored some of the alternatives to PHP, including:

With each alternative, you looked at how it compares to PHP, and learned that some technologies are better suited to certain types of dynamic Web sites than others.

In the last sections of the chapter, you studied the history of PHP and explored some of the more significant new features in version 5.3, such as namespaces and the goto operator. Armed with this overview of the PHP language, you’re ready to move on to Chapter 2 and write your first PHP script!