mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-15 16:38:54 +00:00

git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@334762 c90b9560-bf6c-de11-be94-00142212c4b1
395 lines
17 KiB
XML
395 lines
17 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
|
|
<appendix xml:id="history" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>History of PHP and Related Projects</title>
|
|
<para>
|
|
PHP has come a long way since its birth in the mid-1990's.
|
|
From humble beginnings to becoming one of the most prominent
|
|
languages powering the web, the evolution of PHP is a geek's
|
|
fairy tale. Mind you, such explosive growth was no easy
|
|
task. Those of you interested in briefly seeing how PHP grew
|
|
to become what it is today, read on. If you'd like to touch
|
|
a piece of Internet history, you can find old releases of
|
|
PHP in the <link xlink:href="&url.php.museum;">PHP Museum</link>.
|
|
</para>
|
|
|
|
<sect1 xml:id="history.php">
|
|
<title>History of PHP</title>
|
|
|
|
<sect2 xml:id="history.phpfi">
|
|
<title>PHP Tools, FI, Construction Kit, and PHP/FI</title>
|
|
<para>
|
|
PHP as it's known today is actually the successor to a
|
|
product named PHP/FI. Created in 1994 by Rasmus Lerdorf,
|
|
the very first incarnation of PHP was a simple set of
|
|
Common Gateway Interface (CGI) binaries written in the C
|
|
programming language. Originally used for tracking visits
|
|
to his online resume, he named the suite of scripts "Personal
|
|
Home Page Tools," more frequently referenced as "PHP Tools."
|
|
Over time, more functionality was desired, and Rasmus rewrote
|
|
PHP Tools, producing a much larger and richer implementation.
|
|
This new model was capable of database interaction and more,
|
|
providing a framework upon which users could develop simple dynamic
|
|
web applications such as guestbooks. In June of 1995, Rasmus
|
|
<link xlink:href="&url.php.release1.0.0;">released</link>
|
|
the source code for PHP Tools to the public, which allowed
|
|
developers to use it as they saw fit. This also permitted -
|
|
and encouraged - users to provide fixes for bugs in the code,
|
|
and to generally improve upon it.
|
|
</para>
|
|
<para>
|
|
In September of that year, Rasmus expanded upon PHP and - for a
|
|
short time - actually dropped the PHP name. Now referring to the
|
|
tools as FI (short for "Forms Interpreter"), the new implementation
|
|
included some of the basic functionality of PHP as we know
|
|
it today. It had Perl-like variables, automatic interpretation
|
|
of form variables, and HTML embedded syntax. The syntax itself
|
|
was similar to that of Perl, albeit much more limited, simple,
|
|
and somewhat inconsistent. In fact, to embed the code into an
|
|
HTML file, developers had to use HTML comments. Though this
|
|
method was not entirely well-received, FI continued to enjoy growth
|
|
and acceptance as a CGI tool --- but still not quite as a language.
|
|
However, this began to change the following month; in October, 1995,
|
|
Rasmus released a complete rewrite of the code. Bringing back the
|
|
PHP name, it was now (briefly) named "Personal Home Page Construction
|
|
Kit," and was the first release to boast what was, at the time,
|
|
considered an advanced scripting interface. The language was
|
|
deliberately designed to resemble C in structure, making it an easy
|
|
adoption for developers familiar with C, Perl, and similar languages.
|
|
Having been thus far limited to UNIX and POSIX-compliant systems,
|
|
the potential for a Windows NT implementation was being explored.
|
|
</para>
|
|
<para>
|
|
The code got another complete makeover, and in April of 1996,
|
|
combining the names of past releases, Rasmus introduced PHP/FI.
|
|
This second-generation implementation began to truly evolve PHP
|
|
from a suite of tools into a programming language in its own
|
|
right. It included built-in support for DBM, mSQL, and Postgres95
|
|
databases, cookies, user-defined function support, and much more.
|
|
That June, PHP/FI was given a version 2.0 status. An interesting
|
|
fact about this, however, is that there was only one single full
|
|
version of PHP 2.0. When it finally graduated from beta status
|
|
in November, 1997, the underlying parsing engine was already
|
|
being entirely rewritten.
|
|
</para>
|
|
<para>
|
|
Though it lived a short development life, it continued to enjoy
|
|
a growing popularity in still-young world of web development. In
|
|
1997 and 1998, PHP/FI had a cult of several thousand users around
|
|
the world. A Netcraft survey as of May, 1998, indicated that
|
|
nearly 60,000 domains reported having headers containing
|
|
"PHP", indicating that the host server did indeed have it installed.
|
|
This number equated to approximately 1% of all domains on the
|
|
Internet at the time. Despite these impressive figures, the maturation
|
|
of PHP/FI was doomed to limitations; while there were several minor
|
|
contributors, it was still primarily developed by an individual.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Example PHP/FI Code</title>
|
|
<programlisting role="html">
|
|
<![CDATA[
|
|
<!--include /text/header.html-->
|
|
|
|
<!--getenv HTTP_USER_AGENT-->
|
|
<!--ifsubstr $exec_result Mozilla-->
|
|
Hey, you are using Netscape!<p>
|
|
<!--endif-->
|
|
|
|
<!--sql database select * from table where user='$username'-->
|
|
<!--ifless $numentries 1-->
|
|
Sorry, that record does not exist<p>
|
|
<!--endif exit-->
|
|
Welcome <!--$user-->!<p>
|
|
You have <!--$index:0--> credits left in your account.<p>
|
|
|
|
<!--include /text/footer.html-->
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="history.php3">
|
|
<title>PHP 3</title>
|
|
<para>
|
|
PHP 3.0 was the first version that closely resembles PHP as
|
|
it exists today. Finding PHP/FI 2.0 still inefficient and
|
|
lacking features they needed to power an eCommerce application
|
|
they were developing for a university project, Andi Gutmans and
|
|
Zeev Suraski of Tel Aviv, Israel, began yet another complete
|
|
rewrite of the underlying parser in 1997. Approaching Rasmus
|
|
online, they discussed various aspects of the current
|
|
implementation and their redevelopment of PHP. In an effort to
|
|
improve the engine and start building upon PHP/FI's existing
|
|
user base, Andi, Rasmus, and Zeev decided to collaborate in
|
|
the development of a new, independent programming language.
|
|
This entirely new language was released under a new name, that
|
|
removed the implication of limited personal use that the
|
|
PHP/FI 2.0 name held. It was renamed simply 'PHP', with the
|
|
meaning becoming a recursive acronym - PHP: Hypertext Preprocessor.
|
|
</para>
|
|
<para>
|
|
One of the biggest strengths of PHP 3.0 was its strong
|
|
extensibility features. In addition to providing end users
|
|
with a mature interface for multiple databases, protocols,
|
|
and APIs, the ease of extending the language itself attracted
|
|
dozens of developers who submitted a variety of modules. Arguably,
|
|
this was the key to PHP 3.0's tremendous success. Other key
|
|
features introduced in PHP 3.0 included object-oriented programming
|
|
support and a far more powerful and consistent language syntax.
|
|
</para>
|
|
<para>
|
|
In June, 1998, with many new developers from around the world
|
|
joining the effort, PHP 3.0 was announced by the new PHP Development
|
|
Team as the official successor to PHP/FI 2.0. Active development
|
|
of PHP/FI 2.0, which had all-but ceased as of November of the
|
|
previous year, was now officially ended. After roughly nine months
|
|
of open public testing, when the announcement of the official
|
|
release of PHP 3.0 came, it was already installed on over 70,000
|
|
domains around the world, and was no longer limited to
|
|
POSIX-compliant operating systems. A relatively small share of
|
|
the domains reporting PHP as installed were hosted on servers
|
|
running Windows 95, 98, and NT, and Macintosh. At its peak, PHP 3.0
|
|
was installed on approximately 10% of the web servers on the
|
|
Internet.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="history.php4">
|
|
<title>PHP 4</title>
|
|
<para>
|
|
By the winter of 1998, shortly after PHP 3.0 was officially
|
|
released, Andi Gutmans and Zeev Suraski had begun working
|
|
on a rewrite of PHP's core. The design goals were to improve
|
|
performance of complex applications, and improve the
|
|
modularity of PHP's code base. Such applications were made
|
|
possible by PHP 3.0's new features and support for a wide
|
|
variety of third party databases and APIs, but PHP 3.0 was
|
|
not designed to handle such complex applications efficiently.
|
|
</para>
|
|
<para>
|
|
The new engine, dubbed 'Zend Engine' (comprised of their
|
|
first names, Zeev and Andi), met these design goals
|
|
successfully, and was first introduced in mid 1999. PHP 4.0,
|
|
based on this engine, and coupled with a wide range of
|
|
additional new features, was officially released in May
|
|
2000, almost two years after its predecessor. In addition
|
|
to the highly improved performance of this version, PHP 4.0
|
|
included other key features such as support for many more
|
|
web servers, HTTP sessions, output buffering, more secure
|
|
ways of handling user input and several new language constructs.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="history.php5">
|
|
<title>PHP 5</title>
|
|
<para>
|
|
PHP 5 was released in July 2004 after long development and several
|
|
pre-releases. It is mainly driven by its core, the
|
|
<literal>Zend Engine 2.0</literal> with a
|
|
new object model and dozens of other new features.
|
|
</para>
|
|
<para>
|
|
PHP's development team includes dozens of developers, as well
|
|
as dozens others working on PHP-related and supporting projects,
|
|
such as PEAR, PECL, and documentation, and an underlying network
|
|
infrastructure of well over one-hundred individual web servers
|
|
on six of the seven continents of the world. Though only an
|
|
estimate based upon statistics from previous years, it is safe
|
|
to presume PHP is now installed on tens or even perhaps hundreds
|
|
of millions of domains around the world.
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="history.php.related">
|
|
<title>History of PHP related projects</title>
|
|
|
|
<!-- Hope Stig and/or Egon can do this
|
|
|
|
<sect2 xml:id="history.phpdoc">
|
|
<title>PHP Documentation Project</title>
|
|
<para>
|
|
</para>
|
|
</sect2>
|
|
|
|
-->
|
|
|
|
<sect2 xml:id="history.pear">
|
|
<title>PEAR</title>
|
|
<para>
|
|
<link xlink:href="&url.php.pear;">PEAR</link>, the <literal>PHP Extension and
|
|
Application Repository</literal> (originally, PHP Extension and Add-on
|
|
Repository) is PHP's version of foundation classes, and may grow in
|
|
the future to be one of the key ways to distribute PHP extensions among
|
|
developers.
|
|
</para>
|
|
<para>
|
|
PEAR was born in discussions held in the PHP Developers'
|
|
Meeting (PDM) held in January 2000 in Tel Aviv. It was
|
|
created by Stig S. Bakken, and is dedicated to his first-born
|
|
daughter, Malin Bakken.
|
|
</para>
|
|
<para>
|
|
Since early 2000, PEAR has grown to be a big, significant
|
|
project with a large number of developers working on
|
|
implementing common, reusable functionality for the
|
|
benefit of the entire PHP community. PEAR today includes
|
|
a wide variety of infrastructure foundation classes
|
|
for database access, content caching, mathematical
|
|
calculations, eCommerce and much more.
|
|
</para>
|
|
<para>
|
|
More information about PEAR can be found in <link
|
|
xlink:href="&url.php.pear.manual;">the manual</link>.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="history.phpqa">
|
|
<title>PHP Quality Assurance Initiative</title>
|
|
<para>
|
|
The <link xlink:href="&url.php.prerelease;">PHP Quality Assurance
|
|
Initiative</link> was set up in the summer of 2000 in response to
|
|
criticism that PHP releases were not being tested well enough for
|
|
production environments. The team now consists of a core group of
|
|
developers with a good understanding of the PHP code
|
|
base. These developers spend a lot of their time
|
|
localizing and fixing bugs within PHP. In addition
|
|
there are many other team members who test and
|
|
provide feedback on these fixes using a wide variety
|
|
of platforms.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="history.phpgtk">
|
|
<title>PHP-GTK</title>
|
|
<para>
|
|
<link xlink:href="&url.php.gtk;">PHP-GTK</link> is the PHP solution for
|
|
writing client side GUI applications. Andrei Zmievski remembers the
|
|
planing and creation process of PHP-GTK:
|
|
</para>
|
|
<blockquote>
|
|
<para>
|
|
GUI programming has always been of my interests, and I found
|
|
that Gtk+ is a very nice toolkit, except that programming with
|
|
it in C is somewhat tedious. After witnessing PyGtk and GTK-Perl
|
|
implementations, I decided to see if PHP could be made to
|
|
interface with Gtk+, even minimally. Starting in August of 2000,
|
|
I began to have a bit more free time so that is when I started
|
|
experimenting. My main guideline was the PyGtk implementation
|
|
as it was fairly feature complete and had a nice object-oriented
|
|
interface. James Henstridge, the author of PyGtk, provided very
|
|
helpful advice during those initial stages.
|
|
</para>
|
|
<para>
|
|
Hand-writing the interfaces to all the Gtk+ functions was out of
|
|
the question, so I seized upon the idea of code-generator, similar
|
|
to how PyGtk did it. The code generator is a PHP program that reads
|
|
a set of <filename>.defs</filename> file containing the Gtk+ classes, constants, and
|
|
methods information and generates C code that interfaces PHP with
|
|
them. What cannot be generated automatically can be written by
|
|
hand in <filename>.overrides</filename> file.
|
|
</para>
|
|
<para>
|
|
Working on the code generator and the infrastructure took some
|
|
time, because I could spend little time on PHP-GTK during the
|
|
fall of 2000. After I showed PHP-GTK to Frank Kromann, he got
|
|
interested and started helping me out with code generator work
|
|
and Win32 implementation. When we wrote the first Hello World
|
|
program and fired it up, it was extremely exciting. It took a
|
|
couple more months to get the project to a presentable condition
|
|
and the initial version was released on March 1, 2001. The
|
|
story promptly hit SlashDot.
|
|
</para>
|
|
<para>
|
|
Sensing that PHP-GTK might be extensive, I set up separate
|
|
mailing lists and CVS repositories for it, as well as the
|
|
gtk.php.net website with the help of Colin Viebrock. The
|
|
documentation would also need to be done and James Moore
|
|
came in to help with that.
|
|
</para>
|
|
<para>
|
|
Since its release PHP-GTK has been gaining popularity. We
|
|
have our own documentation team, the manual keeps improving,
|
|
people start writing extensions for PHP-GTK, and more and
|
|
more exciting applications with it.
|
|
</para>
|
|
</blockquote>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="history.php.books">
|
|
<title>Books about PHP</title>
|
|
<para>
|
|
As PHP grew, it began to be recognized as a world-wide popular
|
|
development platform. One of the most interesting ways of
|
|
seeing this trend was by observing the books about PHP that
|
|
came out throughout the years.
|
|
</para>
|
|
<para>
|
|
To the best of our knowledge, the first book dedicated to PHP was
|
|
'PHP - tvorba interaktivních internetových aplikací' (<emphasis>PHP
|
|
- Creating Interactive Internet Applications</emphasis>) - a Czech
|
|
book published in April 1999, authored by Jirka Kosek. Next month
|
|
followed a German book authored by Egon Schmid, Christian Cartus
|
|
and Richard Blume. The first book in English about PHP was
|
|
published shortly afterwards, and was 'Core PHP Programming' by
|
|
Leon Atkinson. These books covered PHP 3.0.
|
|
</para>
|
|
<para>
|
|
While these books were the first of their kind - they were
|
|
followed by a large number of books from a host of authors and
|
|
publishers. There are over 400 books in English, over 100 books in
|
|
German, and over 50 books in French or Spanish! In addition, you
|
|
can find books about PHP in many other languages, including
|
|
Korean, Japanese and Hebrew.
|
|
</para>
|
|
<para>
|
|
Clearly, this large number of books, written by different
|
|
authors, published by many publishers, and their availability
|
|
in so many languages - are a strong testimony for PHP's
|
|
world-wide success.
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="history.php.publications">
|
|
<title>Publications about PHP</title>
|
|
<para>
|
|
To the best of our knowledge, the first article about PHP in
|
|
a hard-copy magazine was published in the Czech mutation of
|
|
Computerworld in the spring of 1998, and covered PHP 3.0. As with
|
|
books, this was the first in a series of many articles published
|
|
about PHP in various prominent magazines.
|
|
</para>
|
|
<para>
|
|
Articles about PHP appeared in Dr. Dobbs, Linux Enterprise,
|
|
Linux Magazine and many more. Articles about migrating ASP-based
|
|
applications to PHP under Windows even appear on <productname>Microsoft</productname>'s
|
|
very own <acronym>MSDN</acronym>!
|
|
</para>
|
|
</sect1>
|
|
|
|
</appendix>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|