-
Notifications
You must be signed in to change notification settings - Fork 108
Expand file tree
/
Copy pathhistory.xml
More file actions
273 lines (251 loc) · 17.3 KB
/
history.xml
File metadata and controls
273 lines (251 loc) · 17.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: fecf93309b34b59e23dda35530d83b0f1b05ab84 Maintainer: class007 Status: ready -->
<!-- CREDITS: mowangjuanzi -->
<appendix xml:id="history" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>PHP 及其相关项目的历史</title>
<para>
自 1990 年代中期诞生以来,PHP 取得了长足的进步。从简陋的开始到成为最杰出的网络驱动语言之一,PHP
的发展是极客的童话。请注意,这种爆炸式增长并非易事。有兴趣想简要了解 PHP 如何发展成为现在的样子,请继续阅读,如果想了解一段
Internet 历史,可以在 <link xlink:href="&url.php.museum;">PHP 博物馆</link>中找到旧版本的 PHP。
</para>
<sect1 xml:id="history.php">
<title>PHP 的历史</title>
<sect2 xml:id="history.phpfi">
<title>PHP 工具、FI、构造工具包和 PHP/FI</title>
<para>
众所周知,今天的 PHP 实际上是名为 PHP/FI 的产品的继承作品。PHP 的第一个化身由 Rasmus Lerdorf 于 1994 年创建,是一组用
C 编程语言编写的简单的通用网关接口(Common Gateway Interface,简称 CGI)二进制文件,最初用于追踪对其在线简历的访问,其将这套脚本套件命名为“Personal
Home Page Tools”,更多的引用为“PHP Tools”。随着时间的推移,需要更多的功能,Rasmus 重写了 PHP
Tool,创造出更大更丰富的实现。这种新模型能够进行数据库交互等等,提供了框架,用户可以在该框架上开发简单且动态的
Web 应用程序,比如留言簿。1995 年 6 月,Rasmus 向公众 <link xlink:href="&url.php.release1.0.0;">发布</link>了
PHP Tool 的源代码,允许开发者按照他们认为合适的方式使用它。这也允许且鼓励用户为代码中的错误提供修复,并对其进行整体改进。
</para>
<para>
同年 9 月,Rasmus 扩展了 PHP,在很短的时间内放弃了 PHP 这个名称。现在将这些工具称为 FI(“Forms
Interpreter”的缩写),新的实现包含今天所知道的 PHP 的一些基础功能。具有类 Perl 的变量、表单变量的自动解释和 HTML
嵌入式语法。语法本身跟 Perl 的语法相似,虽然更加有限、简单且有些不一致。事实上,要将代码嵌入到 HTML 文件中,开发人员必须使用
HTML 注释。虽然这种做法并没有完全接受,但 FI 作为 CGI 工具继续享受增长和认可,但仍然不能等同于编程语言。然而,在接下来的一个月内发生了变化;1995
年 10 月,Rasmus 发布了完全重写的代码。恢复 PHP 名称,现在(暂时)称为“Personal Home Page Construction
Kit”,是第一个拥有在当时认为是先进脚本接口的版本。该语言特意设计为结构上类似 C,使熟悉 C、Perl 和类似语言的开发人员可以轻松接受。到目前为止仅限于
UNIX 和 POSIX 兼容的系统,正在探索 Windows NT 实施的可能性。
</para>
<para>
1996 年 4 月,结合过去的版本名称,Rasmus 引入了 PHP/FI,代码又得到了彻底的改造。第二代真正实现了将 PHP 从一套工具发展为一种独立的语言。包含对
DBM、mSQL 和 Postgres95 数据库、cookie、用户定义函数等的内置支持。同年 6 月,PHP/FI 发行版本 2.0。然而,一个有趣的事实是,仅有一个 PHP 2.0
的完整版本。当其最后于 1997 年 11 月从 Beta 状态毕业时,已经完全重写底层解析引擎。
</para>
<para>
尽管开发周期很短,但仍然在年轻的 Web 开发世界中继续享有越来越高的知名度。在 1997 年和 1998 年,PHP/FI 在全球拥有数千名用户。截止到 1998 年 5
月的一项 Netcraft 调查表明,将近 60000 个域名报告中报头包含“PHP”,表明宿主服务器确实安装了它。这个数字大约相当于当时 Internet 上所有域名的
1%。尽管有这些令人深刻的数字,但 PHP/FI 的成熟注定是有限的;虽然有几个次要贡献者,但还是大部分由个人开发。
</para>
<para>
<example>
<title>PHP/FI 代码示例</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 是第一个跟现在 PHP 非常类似的版本。1997 年,以色列特拉维夫的 Andi Gutmans 和 Zeev Suraski 在为大学的项目中开发电子商务程序时发现 PHP/FI 2.0
效率仍然低下且功能明显不足,于是对底层解析器进行了一次完全重写。在线与 Rasmus 交谈,讨论了当前各个方面的实施以及对 PHP 重新开发。为了改进引擎并开始建设
PHP/FI 现有用户群,Andi、Rasmus 和 Zeev 决定合作开发一种新的独立(independent)编程语言。这种全新的语言以新名称发布,消除 PHP/FI 2.0
名字所包含的本语言只限于个人使用的含义。将其简单的重命名为“PHP”,其含义变成了递归缩写——PHP:Hypertext Preprocessor。
</para>
<para>
PHP 3.0 的一个最强大的优势是其强大的可扩展性。除了给最终用户提供适用于多种数据库、协议和 API 的成熟接口外,语言本身的可扩展性还吸引了数十名的开发人员提交各种模块。可以说,这是
PHP 3.0 取得巨大成功的关键。PHP 3.0 中引入的其它主要特性还包括支持面向对象编程和更强大和一致的语法结构。
</para>
<para>
1998 年 6 月,随着来自世界各地的许多新开发人员的加入,新的 PHP 开发团队宣布 PHP 3.0 作为 PHP/FI 2.0 的正式继承者。PHP/FI 2.0 的积极开发在去年 11
月几乎停止,现在正式结束。经过大概 9 个月的公开测试,当 PHP 3.0 正式发布的消息来临时,其已经安装在全球超过 70000 个域名中,不再局限于 POSIX
兼容的操作系统。在已安装 PHP 的域名报告中,有一小部分托管在运行 Windows 95、98、NT 和 Macintosh 的服务器上。在鼎盛时期,PHP 3.0 安装在 Internet
上大约 10% 的 Web 服务器上。
</para>
</sect2>
<sect2 xml:id="history.php4">
<title>PHP 4</title>
<para>
1998 年的冬天,PHP 3.0 官方发布不久,Andi Gutmans 和 Zeev Suraski 开始着手重写 PHP 核心。设计目标是增强复杂程序的性能并改进 PHP 代码库的模块化。PHP
3.0 的新特性和对各种第三方数据库和 API 的支持使得这样的程序成为可能,但 PHP 3.0 并不是为有效处理此类复杂程序而设计的。
</para>
<para>
新的引擎称为“Zend Engine”(由它们的名字 Zeev 和 Andi 组成)成功实现了这些设计目标,并在 1999 年年中首次推出。PHP 4.0 以该引擎为基础,并结合大量附加新功能,于
2000 年 5 月正式发布,比前代产品晚了近两年。此版本除了性能大幅提升以外,PHP 4.0 还包含了其它关键功能,例如支持更多的 web 服务器、HTTP
Session、输出缓冲、更安全的处理用户输入的方式以及几种新的语言结构。
</para>
</sect2>
<sect2 xml:id="history.php5">
<title>PHP 5</title>
<para>
经过长时间的开发及几次预发布后,PHP 5 于 2004 年 7 月发布。主要由 <literal>Zend Engine 2.0</literal> 核心驱动,具有新的对象模型和数十个新功能。
</para>
<para>
PHP 的开发团队包括数十名开发人员,以及从事 PHP 相关和支持项目(例如 PEAR、PECL 和文档)的数十名其他人员,以及由分布在世界七个大洲中的六个的 100 多个独立 Web
服务器组成的底层网络基础设施。虽然只是基于前几年统计数据的估计,但可以安全地假设 PHP 现在已安装在全球数千万甚至数亿个域名中。
</para>
</sect2>
<sect2 xml:id="history.php6">
<title>PHP 6</title>
<para>
PHP 6 计划在引擎和语言中深度支持 Unicode。这项工作后来放弃了,但原本计划用于 PHP 6
的其他特性整合到了 PHP 5.3(<link linkend="language.namespaces">namespaces</link>)和 PHP 5.4(<link
linkend="language.oop5.traits">trait</link>、“短”数组语法)中。
</para>
</sect2>
<sect2 xml:id="history.php7">
<title>PHP 7</title>
<para>
PHP 7.0 于 2015 年发布,并且核心采用了另外一个主要版本 <literal>Zend Engine 3.0</literal>,其中包括显着的性能和内存使用改进(速度比
PHP 5.6 快两倍)、稳定的 64 位支持、异常改进、安全随机数生成器、<link
linkend="language.operators.comparison.coalesce">NULL 合并运算符(??)</link>、<link
linkend="language.oop5.anonymous">匿名类</link>和其他功能。
</para>
<para>
PHP 7 系列的后续版本引入了更多语言特性,例如<link linkend="function.list">短数组语法</link>(7.1)、对象参数和返回类型声明(7.2)、更灵活的
<link linkend="language.types.string.syntax.heredoc">heredoc</link> 和 <link linkend="language.types.string.syntax.nowdoc">nowdoc</link>
语法(7.3)、类型化属性(7.4)和<link linkend="class.ffi">外部函数接口</link>(7.4)。
</para>
</sect2>
<sect2 xml:id="history.php8">
<title>PHP 8</title>
<para>
PHP 8.0 于 2020 年首次发布,是 PHP 语言的又一次重大更新。有许多新功能和优化,包含<link
linkend="functions.named-arguments">命名参数</link>、<link linkend="language.types.declarations.composite.union">联合类型</link>、<link
linkend="language.attributes">注解</link>、<link linkend="language.oop5.decon.constructor.promotion">构造函数属性提升</link>、<link
linkend="control-structures.match"><literal>match</literal></link> 表达式、<link linkend="language.oop5.basic.nullsafe">nullsafe
运算符 (<literal>?-></literal>)</link>、新的优化 JIT 编译器以及类型系统、错误处理和一致性方面的改进。
</para>
<para>
PHP 8 系列的后续版本引入了新的语言特性,包含<link linkend="language.enumerations">枚举</link>(8.1)、<link
linkend="language.fibers">纤程</link>(8.1)、<link linkend="language.oop5.basic.class.readonly">只读类</link>(8.2)、析取范式 (DNF) 类型(8.2)和类型化类常量(8.3)。
</para>
</sect2>
</sect1>
<sect1 xml:id="history.php.related">
<title>PHP 相关项目的历史</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>,<literal>PHP 扩展与应用资源库(PHP Extension and Application Repository</literal>,最初是 PHP Extension
and Add-on Repository)是 PHP 版本的基础类,将来可能会发展成为在开发人员间分发 PHP 扩展的主要方式之一。
</para>
<para>
PEAR 诞生于 2000 年 1 月在特拉维夫举行的 PHP 开发者会议(PDM)上的讨论。由 Stig S. Bakken 创建,并献给他的第一个女儿 Malin Bakken。
</para>
<para>
自 2000 年初以来,PEAR 已经发展成为一个重要的大型项目,大量开发人员致力于实现常见的、可重用的功能,以造福于整个 PHP 社区。今天的 PEAR
包括各种用于数据库访问、内容缓存、数学计算、电子商务等的基础设施基础类。
</para>
<para>
有关 PEAR 的更多信息见其<link xlink:href="&url.php.pear.manual;">手册</link>。
</para>
</sect2>
<sect2 xml:id="history.phpqa">
<title>PHP 质量保证倡议(QA)</title>
<para>
<link xlink:href="&url.php.prerelease;">PHP 质量保证倡议</link>成立于 2000 年夏天,以回应对 PHP 版本没有针对生产环境进行足够好的测试的批评。该团队现在由一组核心开发人员组成,他们对
PHP 代码库有很好的理解。这些开发人员花费大量时间定位和修复 PHP 中的错误。此外,还有许多其他团队成员使用各种平台测试这些修复并提供反馈。
</para>
</sect2>
<sect2 xml:id="history.phpgtk">
<title>PHP-GTK</title>
<para>
<link xlink:href="&url.php.gtk;">PHP-GTK</link> 是编写客户端图形用户界面(GUI)程序的 PHP 解决方案。Andrei Zmievski
回忆了 PHP-GTK 规划和创建的过程:
</para>
<blockquote>
<para>
“我总是对 GUI 编程有着浓厚的兴趣。我发现 Gtk+ 是一个非常好的工具包,只是用它在 C 中有点乏味。目睹了 PyGtk 和 GTK-Perl 的实现,我决定尝试 PHP 是否也能够被做成 Gtk+ 的接口,哪怕是最低限度的。2000
年 8 月,我有了更多的业余时间,那是我开始尝试的时候。我的主要指导方针是 PyGtk 实现,因为它功能相当完整且有漂亮的面向对象的接口。PyG 的作者 James Henstridge,在最初的筹备阶段提供了非常有用的建议。
</para>
<para>
手写所有 Gtk+ 函数接口是不可能的事情,所以我把重点放在了代码生成上,类似于 PyGtk 的做法。代码生成器是一个 PHP 程序,它读取一组包含 Gtk+ 类、常量和方法信息的 <filename>.defs</filename>
文件,并生成连接到 PHP 的 C 代码。无法自动生成的部分可以在 <filename>.overrides</filename> 文件。
</para>
<para>
代码生成器和基础设施的工作花了一些时间,因为在 2000 年秋天我几乎没有时间花在 PHP-GTK 上。在我把 PHP-GTK 给 Frank Kromann 演示过后,他产生了浓厚的兴趣,并开始帮助我完成代码生成器和 Win 32
实现。当我们编写了第一个 Hello World 程序并将其启动时,我们的喜悦之情溢于言表。又花了几个月的时间才使项目达到了可展示的状态,并于 2001 年 3 月 1 日发布了初始版本。这个故事很快就传到了 SlashDot。
</para>
<para>
意识到 PHP-GTK 前景广阔,我便专门为它设置了邮件列表和 CVS 知识库。同时,gtk.php.net 网站也在 Colin Viebrock 的帮助下建立起来。文档的工作也由 James Moore 承担起来。
</para>
<para>
自 PHP-GTK 发布之后,越来越受欢迎。我们有自己的文档小组,手册持续更新,人们开始为 PHP-GTK 编写扩展,以及越来越多的应用程序。
</para>
</blockquote>
</sect2>
</sect1>
<sect1 xml:id="history.php.books">
<title>PHP 相关书籍</title>
<para>
随着 PHP 的发展,人们认为它是一个世界范围内流行的开发平台。看到这种趋势的最有趣方法之一就是观察这些年出的 PHP 相关书籍越来越多。
</para>
<para>
据我们所知,第一本专门介绍 PHP 的书是“php- dynamische webauftritte professionell realisieren”(<emphasis>PHP - Creating Interactive Internet
Applications</emphasis>)——一本捷克语书籍,于 1999 年 4 月出版,作者是 Jirka Kosek。下个月,Egon Schmid、Christian Cartus 和 Richard Blume
合作出版了一本德文书籍。第一本关于 PHP 的英文书随后出版,书名是“Core PHP Programming”,作者为:Leon Atkinson。这些书都是写 PHP 3.0 的。
</para>
<para>
虽然这些书是同类图书的第一本,但随后出现了来自许多作者和出版商的大量书籍。有 400 多本英文书籍,100 多本德文书籍,50 多本法文书籍或西班牙书籍!除此之外,你可以发现韩文、日文、中文和希伯来文等等语言版本的 PHP 相关图书。
</para>
<para>
显然,这么大量的图书,这么多作者的写作,这么多出版商的出版,并出现了这么多语言的版本——这是 PHP 在世界范围内取得成功的有力证明!
</para>
</sect1>
<sect1 xml:id="history.php.publications">
<title>PHP 相关出版物</title>
<para>
据我们所知,纸质杂志上第一篇关于 PHP 的文章于 1998 年春天的捷克版 Computerworld 发表,其中涵盖了 PHP 3.0。和书籍一样,这也是在各种知名杂志上发表的许多关于 PHP 的文章中的第一篇。
</para>
<para>
关于 PHP 的文章出现在 Dr. Dobbs、Linux Enterprise、Linux Magazine 等杂志上。关于在 Windows 下如何转换 ASP 程序到 PHP
的文章甚至出现在了 <productname>Microsoft</productname> 的 <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
-->