mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-17 01:18:55 +00:00

git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@283790 c90b9560-bf6c-de11-be94-00142212c4b1
362 lines
14 KiB
XML
362 lines
14 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 in the last few years.
|
|
Growing to be one of the most prominent languages
|
|
powering the Web was not an easy task. Those of
|
|
you interested in briefly seeing how PHP grew out
|
|
to what it is today, read on. Old PHP releases
|
|
can be found at 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/FI</title>
|
|
<para>
|
|
PHP succeeds an older product, named PHP/FI. PHP/FI was
|
|
created by Rasmus Lerdorf in 1995, initially as a simple
|
|
set of Perl scripts for tracking accesses to his online
|
|
resume. He named this set of scripts 'Personal Home Page
|
|
Tools'. As more functionality was required, Rasmus wrote
|
|
a much larger C implementation, which was able to
|
|
communicate with databases, and enabled users to develop
|
|
simple dynamic Web applications. Rasmus chose to
|
|
<link xlink:href="&url.php.release1.0.0;">release</link>
|
|
the source code for PHP/FI for everybody to see, so that
|
|
anybody can use it, as well as fix bugs in it and improve
|
|
the code.
|
|
</para>
|
|
<para>
|
|
PHP/FI, which stood for Personal Home Page / Forms Interpreter,
|
|
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.
|
|
</para>
|
|
<para>
|
|
By 1997, PHP/FI 2.0, the second write-up of the C implementation,
|
|
had a cult of several thousand users around the world
|
|
(estimated), with approximately 50,000 domains reporting as
|
|
having it installed, accounting for about 1% of the domains
|
|
on the Internet. While there were several people contributing
|
|
bits of code to this project, it was still at large a one-man
|
|
project.
|
|
</para>
|
|
<para>
|
|
PHP/FI 2.0 was officially released only in November 1997, after
|
|
spending most of its life in beta releases. It was shortly
|
|
afterwards succeeded by the first alphas of PHP 3.0.
|
|
</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
|
|
we know it today. It was created by Andi Gutmans and Zeev
|
|
Suraski in 1997 as a complete rewrite, after they found
|
|
PHP/FI 2.0 severely underpowered for developing an eCommerce
|
|
application they were working on for a University project.
|
|
In an effort to cooperate and start building upon PHP/FI's
|
|
existing user-base, Andi, Rasmus and Zeev decided to cooperate
|
|
and announce PHP 3.0 as the official successor of PHP/FI 2.0,
|
|
and development of PHP/FI 2.0 was mostly halted.
|
|
</para>
|
|
<para>
|
|
One of the biggest strengths of PHP 3.0 was its strong
|
|
extensibility features. In addition to providing end users
|
|
with a solid infrastructure for lots of different databases,
|
|
protocols and APIs, PHP 3.0's extensibility features attracted
|
|
dozens of developers to join in and submit new extension
|
|
modules. Arguably, this was the key to PHP 3.0's tremendous
|
|
success. Other key features introduced in PHP 3.0 were the
|
|
object oriented syntax support and the much more powerful
|
|
and consistent language syntax.
|
|
</para>
|
|
<para>
|
|
The whole 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 named plain 'PHP', with the
|
|
meaning being a recursive acronym - PHP: Hypertext Preprocessor.
|
|
</para>
|
|
<para>
|
|
By the end of 1998, PHP grew to an install base of tens of
|
|
thousands of users (estimated) and hundreds of thousands of
|
|
Web sites reporting it installed. At its peak, PHP 3.0 was
|
|
installed on approximately 10% of the Web servers on the
|
|
Internet.
|
|
</para>
|
|
<para>
|
|
PHP 3.0 was officially released in June 1998, after having
|
|
spent about 9 months in public testing.
|
|
</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, PHP 3.0.
|
|
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>
|
|
<para>
|
|
Today, PHP is being used by hundreds of thousands of developers
|
|
(estimated), and several million sites report as having it
|
|
installed, which accounts for over 20% of the domains on the
|
|
Internet.
|
|
</para>
|
|
<para>
|
|
PHP's development team includes dozens of developers, as well
|
|
as dozens others working on PHP-related projects such as PEAR
|
|
and the documentation project.
|
|
</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>
|
|
</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í' - 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. Both of 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 40 books in English, 50 books in
|
|
German, and over 20 books in French! In addition, you can find
|
|
books about PHP in many other languages, including Spanish,
|
|
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:"../../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
|
|
-->
|