The first part of this book is a thorough discussion of PHP as  a programming language. You will be introduced to common concepts of computer  science and how they are implemented in PHP. No prior programming experience  beyond the use of simple mark-up languages is necessary. That is, you must be  familiar with HTML. These chapters focus on building a foundation of  understanding rather than on how to solve specific problems. If you have  experience programming in a similar language, such as C or Perl, you may choose  to read 
Chapter 1 and skim  the rest, saving it as a reference. In most situations, PHP treats syntax much  as these two languages do.
Chapter 1  is an introduction to PHP—how it began and what it looks like. It may be  sufficient for experienced programmers, since it moves quickly through PHP's key  features. If you are less experienced, I encourage you to treat this chapter as  a first look. Don't worry too much about exactly how the examples work. I  explain the concepts in depth in later chapters.
Chapter 2  introduces the concepts of variables, operators, and expressions. These are the  building blocks of a PHP script. Essentially, a computer stores and manipulates  data. Variables let you name values; operators and expressions let you  manipulate them.
Chapter 3  examines the ways PHP allows you to control program execution. This includes  conditional branches and loops.
Chapter 4  deals with functions, how they are called and how to define them. Functions are  packages of code that you can call upon repeatedly.
Chapter 5  is about arrays—collections of values that are identified by either numbers or  names. Arrays are a very powerful way to store information and retrieve it  efficiently.
Chapter 6  is about classes, presenting an object-oriented approach to grouping functions  and data. Although not strictly an object-oriented language, PHP supports many  features found in OO languages such as Java.
Chapter 7  deals with how PHP sends and receives data. Files, network connections, and  other means of communication are covered.
1.1 The Origins of PHP
Wonderful things come from singular inspiration. PHP began life  as a simple way to track visitors to Rasmus Lerdorf's resume. It also could  embed SQL queries in Web pages. But as often happens on the Web, admirers  quickly asked for their own copies. As a proponent of the Internet's ethic of  sharing, and as a generally agreeable person, Rasmus unleashed upon an  unsuspecting Web his Personal Home Page Tools version 1.0.
"Unleashed upon himself" may be more accurate. PHP became very  popular. A consequence was a flood of suggestions. PHP 1.0 filtered input,  replacing simple commands for HTML. As its popularity grew, people wondered if  it couldn't do more. Loops, conditionals, rich data structures—all the  conveniences of modern structured programming seemed like a next logical step.  Rasmus studied language parsers, read about YACC and GNU Bison, and created PHP  2, otherwise known as PHP/FI.
PHP/FI allowed developers to embed structured code inside HTML  tags. PHP scripts could parse data submitted by HTML forms, communicate with  databases, and make complex calculations on the fly. And it was very fast  because the freely available source code compiled into the Apache Web server. A  PHP script executed as part of the Web server process and required no forking,  often a criticism of Common Gateway Interface (CGI) scripts.
PHP was a legitimate development solution and began to be used  for commercial Web sites. In 1996, Clear Ink created the SuperCuts site (
www.supercuts.com) and used PHP to create a custom experience  for the Web surfer. The PHP Web site tracks the popularity of PHP by measuring  how many different Web sites use the PHP module. When writing the second edition  of this text, it seemed really exciting that PHP had grown from 100,000 sites to  350,000 sites during 1999. The most recent data show more than 10 million  domains using PHP!
In 1997, a pair of Israeli students named Andi Gutmans and Zeev  Suraski attempted to use it for building an online shopping cart, considered  cutting-edge enough to be a university project. Shortly after they started, they  stumbled upon various bugs in PHP that made them look under the hood at the  source code. To their surprise, they noticed that PHP's implementation broke  most of the principles of language design, which made it prone to unexpected  behavior and bugs. Always looking for good excuses not to study for exams, they  started creating a new implementation. In part, the task was a test of their  programming abilities, in part a recreation. A few months later, they had  rewritten PHP from scratch, making it a real,  consistent, and robust language for the first time. Having spent so much time on  the project, they asked the course teacher, Dr. Michael Rodeh, for academic  credit in an attempt to avoid unnecessary exams. Being the manager of the IBM  Research Lab in Haifa and well aware of the overwhelming number of different  languages to choose from, he agreed—with the stipulation that they cooperate  with the existing developers of PHP/FI instead of starting their own  language.
When Andi and Zeev emailed Rasmus with the news about their  rewrite, they wondered if he would accept this new work, as it essentially meant  discarding his implementation. Rasmus did accept it, and a new body was  formed—the PHP Core Team, known today as the PHP Group. Along with Andi, Rasmus,  and Zeev, three other developers—Stig Bakken, Shane Caraveo, and Jim  Winstead—were accepted to the Core Team. A community of developers started  growing around PHP.
After seven months of development, alpha and beta testing, PHP  version 3.0 was officially released on June 6, 1998, and started bending the  curve of PHP's growth to unprecedented angles. PHP's functionality was growing  on a daily basis, and PHP applications were popping up everywhere. Following the  release, Open Source projects written in PHP flourished. Projects like Phorum  tackled long-time Internet tasks such as hosting online discussion. The PHPLib  project provided a framework for handling user sessions that inspired new code  in PHP. FreeTrade, a project I led, offered a toolkit for building e-commerce  sites.
Writing about PHP increased as well. More than 20 articles  appeared on high-traffic sites such as 
webmonkey.com and  
techweb.com. Sites dedicated to supporting PHP developers were  launched. The first two books about PHP were published in May 1999. Egon Schmid,  Christian Cartus, and Richard Blume wrote a book in German called 
PHP: Dynamische Webauftritte professionell realisieren.  Prentice Hall published the first edition of my book, 
Core PHP Programming. Since then, countless books about  PHP fill bookstore shelves.
Given this background, there were no reasons not to be happy  with the way PHP was back then. Perhaps the internal knowledge of what was going  on under the hood and the feeling familiar to every developer—"I could have done  it much better"—were the reasons that Andi and Zeev were some of the very few  people who felt unhappy with PHP 3. As if out of habit, they withdrew from the  PHP community and attempted to design a new approach towards executing PHP  scripts.
A few months later, on January 4, 1999, Zeev and Andi announced  a new framework that promised to increase dramatically the performance of PHP  scripts. They dubbed the new framework the Zend Engine. Early tests showed  script execution times dropping by a factor of 100. In addition, new features  for compiling scripts into binary, debugging, optimization, and profiling were  planned. This announcement officially ended the PHP 3.1 project, which was  supposed to bring better Windows support to PHP 3 but failed to gain momentum,  and officially started the planning of PHP 4.
Work on the Zend Engine and PHP 4 continued in parallel with  bug fixes and enhancements to PHP 3. During 1999, eight incremental versions  were released, and on December 29, 1999, PHP version 3.0.13 was announced. A PHP  beta based on the Zend Engine became publicly available in July 19, 1999, and  was followed by an intense development period of various components, some of  which were brand new, such as built-in session handling, output buffering, and a  Web server abstraction layer. The release of PHP 4 on May 22, 2000, marked  another important milestone on PHP's journey to becoming the most popular Web  development platform on earth. The number of people working on various levels of  PHP has grown immensely, and new projects, most notably PEAR, gained momentum  and started pushing PHP to new heights of popularity.
The PHP community drives the development of new features. Many  programmers find inspiration in object-oriented programming. PHP 3 introduced  objects as syntactic sugar. That is, while the syntax used for objects was  different, the underlying implementation varied little from arrays. It attracted  many object-oriented advocates, but the limited implementation left them  desiring more. PHP 5 addresses these needs with a strong, rebuilt object  system.