Different versions of PHP
It was eight years ago, when Rasmus Lerdorf first started
developing PHP/FI. He could not have imagined that his creation would
eventually lead to the development of PHP as we know it today, which is being
used by millions of people. The first version of "PHP/FI," called Personal Homepage Tools/Form
Interpreter, was a collection
of Perl scripts in 1995. One of the basic features was a Perl-like language for
handling form submissions, but it lacked many common useful language features,
such as for loops.
PHP/FI 2
A rewrite
came with PHP/FI 2 in 1997, but at that time the development was almost solely
handled by Rasmus. After its release in November of that year, Andi Gutmans and
Zeev Suraski bumped into PHP/FI while looking for a language to develop an e-commerce
solution as a university project. They discovered that PHP/FI was not quite as
powerful as it seemed, and its language was lacking many common features. One
of the most interesting aspects included the way while loops were implemented.
The hand-crafted lexical scanner would go through the script and when it hit
the while keyword it would remember its position in the file. At the end of the
loop, the file pointer sought back to the saved position, and the whole loop
was reread and re-executed.
PHP 3
Zeev and
Andi decided to completely rewrite the scripting language. They then teamed up
with Rasmus to release PHP 3, and along also came a new name: PHP: Hypertext
Preprocessor, to emphasize that PHP was a different product and not only
suitable for personal use. Zeev and Andi had also designed and implemented a
new extension API. This new API made it possible to easily support additional
extensions for performing tasks such as accessing databases, spell checkers and
other technologies, which attracted many developers who were not part of the
"core" group to join and contribute to the PHP project. At the time
of PHP 3’s release in June 1998, the estimated PHP installed base consisted of
about 50,000 domains. PHP 3 sparked the beginning of PHP’s real breakthrough,
and was the first version to have an installed base of more than one million
domains.
PHP 4
In late 1998, Zeev and Andi looked back at their work in PHP 3 and
felt they could have written the scripting language even better, so they
started yet another rewrite. While PHP 3 still continuously parsed the scripts
while executing them, PHP 4 came with a new paradigm of "compile first,
execute later." The compilation step does not compile PHP scripts into
machine code; it instead compiles them into byte code, which is then executed
by the Zend Engine (Zend stands for Zeev & Andi), the
new heart of PHP 4. Because of this new way of executing scripts, the
performance of PHP 4 was much better than that of PHP 3, with only a small
amount of backward compatibility breakage.
Among other improvements was an improved extension API for better
run-time performance, a web server abstraction layer allowing PHP 4 to run on
most popular web servers, and lots more. PHP 4 was officially released on May
22, 2002, and today its installed base has surpassed 15 million domains. In PHP
3, the minor version number (the middle digit) was never used, and all versions
were numbered as 3.0.x. This changed in PHP 4, and the minor version number was
used to denote important changes in the language. The first important change
came in PHP 4.1.0, which introducedsuperglobals such as $_GET and $_POST .
Superglobals can be accessed from within functions
without having to use the global keyword. This feature was added in order
to allow the register_globals INI option to be turned off. register_globals is
a feature in PHP which automatically converts input variables like
"?foo=bar" in http://php.net/?foo=barto
a PHP variable called $foo. Because many people do not check input variables
properly, many applications had security holes, which made it quite easy to
circumvent security and authentication code.
With the new superglobals in place, on April 22, 2002, PHP 4.2.0
was released with the register_globals turned off by default. PHP 4.3.0, the
last significant PHP 4 version, was released on December 27, 2002. This version
introduced the Command Line
Interface (CLI), a revamped
file and network I/O layer (called streams),
and a bundled GD library. Although most of those additions have no real effect
on end users, the major version was bumped due to the major changes in PHP’s
core.
PHP 5
Soon
after, the demand for more common object-oriented features increased immensely,
and Andi came up with the idea of rewriting the objected-oriented part of the
Zend Engine. Zeev and Andi wrote the "Zend Engine II: Feature Overview and
Design" document and jumpstarted heated discussions about PHP’s future.
Although the basic language has stayed the same, many features were added,
dropped, and changed by the time PHP 5 matured.
For
example, namespaces and multiple inheritance, which were mentioned in the
original document, never made it into PHP 5. Multiple inheritance was dropped
in favor of interfaces, and namespaces were dropped completely. You can find a
full list of new features in Chapter, "What Is New in PHP 5?" PHP 5
is expected to maintain and even increase PHP’s leadership in the web
development market. Not only does it revolutionizes PHP’s objectoriented
support but it also contains many new features which make it the ultimate web
development platform.
The
rewritten XML functionality in PHP 5 puts it on par with other web
technologies in some areas and overtakes them in others, especially due to the
new SimpleXML extension which makes it ridiculously easy to manipulate XML
documents. In addition, the new SOAP, MySQLi, and variety of other extensions
are significant milestones in PHP’s support for additional technologies.