Recommended PHP reading list

This list of recommended reading material on PHP is compiled from a variety of online sources by Web application developers in IBM's Global Production Services organization. These resources have been selected with the intention of introducing IT specialists and architects to PHP, providing specific information about development and maintenance, and helping to integrate the technology with IBM products.

PHP is an interpreted programming language run in an environment provided by an open source core engine and extensions whose development is driven by many companies and individuals. As such, this list describes resources that apply to writing PHP programs and to customizing the interpreter's environment. It links to material published by IBM and content provided by others.

This list is updated periodically. Please help us improve it by providing your comments below.

Contents

1. Overview

PHP is a scripting language most often embedded in HTML documents and executed on the server before output is sent to the Web browser. It can also be used as a command-line tool outside of the Web server environment.

PHP is commonly installed in conjunction with other open source software to build Web applications, a platform referred to by the term "LAMP" (which stands for Linux, Apache, MySQL, and PHP), though other components can be used. For example, AIX® in place of Linux®, or DB2® instead of MySQL.

PHP definition Wikipedia provides an overview of PHP with code samples demonstrating fundamental programming concepts. Official PHP documentation The PHP manual is the primary source for information about PHP. It contains a frequently asked questions (FAQ) list, installation guides, language reference, and comprehensive function documentation with user-contributed comments.

2. Getting started

2a. Development environment

You can't write PHP without a tool of some sort, be it a simple text editor or full-blown integrated development environment (IDE). Since there are dozens to choose from, here are starting points for a few of the most popular.

Zend Studio Zend Studio is a commercial IDE from the company that architected the PHP engine. This editor provides syntax highlighting with code assist and supports debugging, source control, documentation, and database connections from within the tool itself. jEdit jEdit is a free software text editor written in the Java™ programming language, so it runs in multiple platforms and is extensible via plug-ins. jEdit supports PHP syntax highlighting and additional features, such as syntax validation and code navigation, available through the PHP plug-in PHPParse.

2b. Deployment

When creating or deploying PHP applications, an appropriate environment must be available to run them.

2c. Source control

Whether you're collaborating with a team or need to preserve versions of your own files, source control is the answer.

Tools for Writing Better PHP Code -- Version Control with Subversion Jeff Knight and Andrew Yochum demonstrate how Subversion can be used to manage multiple projects and developers, as well as development and production environments

3. Development

3a. Learning PHP

With a development environment in place, you can learn about PHP's core functionality and begin writing code.

Absolute beginners Zend maintains a collection of PHP 101 introductory tutorials for those who are new to PHP. "Introduction to LAMP technology" This tutorial explores the LAMP Web development framework and shows how that framework can help you build applications to solve common business problems. The tutorial begins with an exploration of the LAMP architecture, then introduces fundamental PHP concepts. After a solid grounding of PHP, the tutorial explains MySQL support, with coverage focusing on database concepts and how to access MySQL from PHP. All of these techniques are discussed within the context of a real-world customer management example. "Getting started with objects with PHP V5" This article describes the fundamentals of objects and classes in PHP V5, from the very basics through to inheritance, for experienced object-oriented programmers and those who have not yet been introduced to objects. "Learning PHP, Part 1" This tutorial is Part 1 of a three-part series that takes you from the most basic PHP script to working with databases and streaming from the file system by documenting the building of a document workflow system. Look at the basics of building a PHP script, including syntax, HTML forms, and database connections. "Learning PHP, Part 2" This tutorial is Part 2 of a three-part series that takes you from the most basic PHP script to working with databases and streaming from the file system by documenting the building of a document workflow system. Here, documents are uploaded by users and stored in a non-Web-accessible location for retrieval by the application in Part 3. Also look at working with XML files using DOM and SAX, and at exceptions. "Learning PHP, Part 3" This tutorial concludes a three-part series that takes you from the most basic PHP script to working with databases and streaming from the file system by documenting the building of a document workflow system. Learn about using HTTP authentication, streaming files, and how to create objects and exceptions.

3b. Advanced PHP

Once you've gotten your feet wet with PHP, you might choose to enhance, refactor, or extend your application.

"Advanced PHP V5 objects" The May 2005 IBM developerWorks article "Getting started with objects with PHP V5" covered enough detail to get a reader up and running with the basics of classes and objects in PHP. This article introduces some of PHP V5's more advanced and design-oriented features. Among them are object types, which allow for decoupling the components of a system from one another, creating reusable, extensible, and scalable code. Introduction to PHP Image Functions PHP is not limited to creating just HTML output. It can also be used to create and manipulate image files in a variety of image formats, including GIF, PNG, JPG, WBMP, and XPM. Jeff Knight talks about using the GD library and the bundled version in PHP. He covers installation and configuration, a discussion of the image functions themselves, and related topics like patent laws and basic color models and theory. "Create graphics the smart way with PHP" Learn to build an object-oriented graphics layer in PHP. Using object-oriented systems can make building complex graphics much easier than building the graphics using the primitives in the standard PHP library. "Reading and writing the XML DOM with PHP" Myriad techniques are available for reading and writing XML in PHP. This article presents three methods for reading XML: using the DOM library, using the SAX parser, and using regular expressions. Writing XML using DOM and PHP text templating is also covered.

3c. Debugging and profiling

Find and fix application problems.

"Debugging techniques for PHP programmers" Explore various methods for debugging PHP applications, including turning on error reporting in Apache and PHP, and placing strategic print statements to locate the source of more difficult bugs through a simple example PHP script. The PHPEclipse plug-in for Eclipse, a slick development environment with real-time syntax parsing abilities, is also covered, as is the DBG debugger extension for PHPEclipse. "PHP Performance Profiling" Learn how to use the Advanced PHP Debugger (APD) to profile your PHP code. Code profiling helps you identify bottlenecks or inefficient code in your application, enabling you to tune the code where needed. Advanced PHP Debugger The Advanced PHP Debugger (APD) is a Zend extension that provides traces suitable for debugging and profiling code, as well as full stack backtrace. Events-based logging is also supported, so different levels of information logging can be set on a script by script basis. Xdebug Xdebug is an extension that offers debugging information, including full traces and function/line indicators. Xdebug also includes profiling and script execution analysis.

4. Integration

4a. IBM database servers

Traditionally, developers have connected to IBM database servers through the Unified ODBC functions in PHP. IBM now recommends using the new PECL ibm_db2 extension for PHP V4 and PHP V5, or PDO for PHP V5 when building new applications. You can decide which extensions are available when compiling PHP, or use Zend Core for IBM to provide you with preconfigured options.

Developing PHP Applications for IBM Data Servers This Redbook describes the installation and configuration details for setting up the IBM data servers and Apache Web application server for PHP applications. Including Zend Core for IBM, Zend Studio installation and configuration, it discusses the process of porting PHP applications from MySQL V5 to DB2 UDB V8.2. "Built for the Web" IBM's new partnership with Zend Technologies makes PHP Web development even easier. This article provides an overview of PHP development for IBM database servers and discusses the challenges and solutions at a high level.

IBM DB2 Universal Database, Cloudscape, and Apache Derby This presentation provides an excellent technical overview of the APIs available for connecting to IBM database servers from PHP. "Develop IBM Cloudscape and DB2 Universal Database applications with PHP" Learn to configure IBM Cloudscape V10.0 and DB2 UDB V8.2 servers for access from PHP V4.x and PHP V5.x. Write database applications using the Unified ODBC extension. Overcome common performance issues due to scrollable cursors and avoid functional limitations in stored procedures. "DB2 Universal Database and the PHP Developer? Absolutely!" Paul C. Zikopoulos introduces the PHP DB2 APIs and demonstrates the new database connection functionality in Zend Studio provided by the Zend Core for IBM add-in. "Connect PHP to DB2 and Cloudscape via PDO" PHP V5.1 is set to ship with a new database connectivity layer known as PHP Data Objects (PDO). While PHP has always had good database connectivity, PDO takes PHP to the next level. "Zend Core for IBM technical roadmap" The Zend Core for IBM provides a seamless out-of-the-box PHP development and production environment, supported by Zend and integrated with IBM's Cloudscape and DB2 UDB database programs. The product includes native support for XML and Web services in support of increased adoption of SOA. It delivers a rapid development and deployment foundation for database-driven applications and offers an upgrade path from the easy-to-use, lightweight Cloudscape database, to the mission-critical DB2, by providing a consistent API between the two. "Zend Core for IBM -- A guided tour for PHP developers" Have you considered setting up PHP V5 on your Linux server, but not had the time to learn how? This article will help guide you through the installation of a PHP V5 environment using the industry's first integrated PHP environment that includes the IBM Cloudscape database server. Installation and configuration is greatly simplified using Zend Core for IBM compared to setting up a complete development and deployment environment from scratch. Zend Core for IBM also provides commonly used PHP extensions and DB2 client libraries to get you connected to your DB2 UDB servers. Support for Zend Core is available from Zend Technologies, a leading provider of PHP products and services, but it is a free download and a time-saver for any PHP developer who wants to build Web applications for IBM Cloudscape or DB2 UDB. "DB2 Express-C, the developer-friendly alternative" There are many no-charge Relational Database Management System (RDBMS) options available. Some are open source, and some are available from commercial vendors at no charge. If you are developing applications using C/C++, Java technology, .NET, or PHP and are looking for a proven data server with innovative technology and a growing developer community base deployed in many critical business solutions, it's time to take a look at DB2 Express-C. Find out how to get started quickly using DB2 Express-C for all of your applications, and review an automation and tuning scenario to optimize your application.

4b. IBM Web and application servers

PHP can also be integrated with other IBM software products.

"Pair J2EE with PHP to implement a common Web application infrastructure" Conventional thinking often pits the AMP stack of open source technologies -- made up of Apache, MySQL, and PHP -- against Enterprise Java applications and IBM middleware. Sure, each camp has something to fit in the Web server role, each has something for the business layer, and each has something else for the data tier. But can't we all just get along? Of course we can, says Daniel Krook, who shows how and when it can be beneficial to mix and match these once-considered-mutually-exclusive solutions to exploit their relative advantages and develop new and innovative applications.

5. Extension

PHP ships with many built-in capabilities, but it can also be easily extended. You can take advantage of pre-written PHP components (PEAR), compile existing packaged C extensions (PECL), or write your own.

6. Migration

6a. Between PHP versions

PHP V5 provides many new features and is largely backward-compatible with PHP V4. However, there are important differences that may affect how your application behaves.

Zend Developer Zone for PHP5 This Zend page highlights developments and additions to PHP V5. "Why PHP 5 Rocks!" Learn about upgrading to PHP V5. The overview provided is explored in detail in the author's book.

6b. To IBM database servers

IBM databases offer many features not available in other vendor products.

IBM Redbook: MySQL to DB2 UDB Conversion Guide DB2 UDB has long been known for its technology leadership. This IBM Redbook is an informative guide that describes how to migrate the database system from MySQL to DB2 UDB V8.1 on Linux and how to convert applications to use DB2 UDB instead of MySQL.

7. Security

PHP enables you to build functional applications quickly. This can lead to inadequate error handling and input verification. Consider these common pitfalls before deploying your site.

PHP Security Consortium The PHP Security Consortium (PHPSC) is a group of PHP experts who promote best practices for secure PHP development. The PHPSC site contains articles, a PHP security guide, and weekly summaries of PHP security issues. Top 7 PHP Security Blunders Pax Dickinson addresses seven common security issues and how to mitigate the risk in your code.

8. Community and news

8a. Mailing lists

Mailing lists are an excellent resource for getting answers to your PHP installation and development problems. See if there is already an answer in the archives. If not, ask your question. Many user groups have their own mailing lists.

Mailing lists at PHP.net There are many lists for those interested in PHP. This site includes lists for general and subject-specific topics in PHP development for end users, as well as a few lists for those building the PHP engine itself.

8b. News

PHP gets better every day. Keeping up with what has changed is important.

SecurityFocus Summaries Keep on top of weekly updates that may affect the security of your PHP applications.

8c. Blogs

Peruse this partial list of blogs by core PHP engine developers and PHP application developers. Following trends here will give you a good idea of what to expect in upcoming versions of PHP, as well as what development best practices to keep on top of.

9. Other resources

9a. User groups

User groups are one of the best ways to meet fellow developers in person and regularly hear about current topics from experts.

New York PHP New York PHP meets at the IBM building in midtown Manhattan on the fourth Tuesday of every month. PHP.net calendar The calendar at php.net lists user group meetings for each month.

9b. Presentations

Many speakers at open source or PHP-specific conferences provide their slides online.

Ilia Alshanetsky See Ilia Alshanetsky's "PHP and Peformance" and other presentations. Marcus Börger See Marcus Börger's "PHP Code Camp" and other presentations. Derick Rethans See Derick Rethans' "RAD for PHP" and other presentations. Talks at php.net This includes a listing of talks using a PHP presentation system.

9c. Books

There are many books published about PHP. These are some of the ones we find helpful.

9d. Webcasts

Peruse this high-level coverage of PHP related topics.

Building Dynamic Data-Driven Web Applications with PHP and DB2 UDB and Cloudscape PHP, the open source Web development language, is the fastest way to build business-critical, scalable Web applications that tie in with XML and Web services.

9e. Magazines

These are available at newstands or online in PDF format.

DB2 Magazine DB2 Magazine is a solutions-oriented magazine that gives IT professionals the strategic and technical information they need to work successfully in the IBM data management environment.

Downloadable resources