### PHP 程序设计 第一章 什么是 PHP？

PHP 是编程语言和应用程序服务器的结合。PHP 和其它的编程语言类似，使用变量存储临时数值，使用操作符处理变量。PHP 的真正价值在于它是一个应用程序服务器。
当谈到应用程序服务器的时候，我是指一个把几个不同的技术组合为一个完整的套件的程序。这些技术包括：
* 一个强壮的编程语言。
* 存取数据库中存储的数据。
* 支持 Internet 协议，尤其是电子邮件和 HTTP 协议。
注意：应用程序服务器有许多其它的特性，这里只列出了最基本的特性。
由于提供了这些多种不同技术的前端接口，PHP 可以使工作变的很容易。
本章的其它部分讲述了有关 PHP 的许多繁杂资料，以及它在应用软件开发中起到的作用。
1.1 起源
PHP 是由 Rasums Lerdorf 创建的，它开始是一个简单的用 Perl 语言编写的程序，用来记录 Rasums Lerdorf 自己在线简历的访问者。以后它又被用 C 语言重新写过，范围扩大到访问数据库。在这期间，有许多人向 Rasums Lerdorf 要此程序的拷贝，以便自己使用。Rasums Lerdorf 为此写了一些介绍此程序的文档，并发布 PHP v1.0。以后，越来越多的人开始使用 PHP，并强烈要求增加一些其他的特性，如循环语句和数组变量等。到这时，其他的一些程序员也开始参与 PHP 源码的编写（主要有 Zeev Suraki 和 Andi Gutmans），很明显，此时的 PHP 为了以后的发展，必须重新编写。因此，PHP v3.0 就出现了。
1.2 特性
PHP 的特性包括：
* 开放源码 -- 所有的 PHP 源码都可以得到。事实上，所有的源码都包含在随书附带的光盘中。
* 没有运行费用 -- PHP 是免费的。
* 基于服务器端 -- 由于 PHP 是在 Web 服务器端运行的，PHP 程序可以很大、很复杂而不会降低客户端的运行速度。
* 跨平台 -- 虽然本书是以 Linux 为重点介绍的，但 PHP 程序可以运行在 UNIX，Linux，或者 Windows 操作系统下。
* 嵌入 HTML -- 因为 PHP 语言可以嵌入到 HTML 内部，所以 PHP 很容易学习。
* 简单的语言 -- 和 Java 和 C++不同，PHP 语言坚持以基本语言为基础，然而它的功能也强大到足以支持任何类型的 Web 站点。
* 效率高 -- 和其它的解释性语言相比，PHP 系统消耗较少的系统资源。当 PHP 作为 Apache Web 服务器的一部分时，运行代码不需要调外部二进制程序，服务器解释脚本不需要承担任何额外负担。
* 分析 XML -- 用户可以组建一个可以读取 XML 信息的 PHP 版本。
* 数据库模块 -- 用户可以使用 PHP 存取 Oracle、Sybase、MS SQL、Adabase D、MySQL、mSQL、PostgreSQL、dBase、FilePro、Unix dbm、Informix/Illustra 等类型的数据库，以及任何支持 ODBC 标准的数据库。
* 文件存取--PHP 有许多支持文件存取函数。
* 文本处理--PHP 有许多函数处理字符串，其中包括模式匹配的能力。
* 复杂的变量--PHP 支持标量、数组、关联数组等变量，这给用户提供了以支持其它的高级数据结构的坚实基础。
* 图象处理--用户可以使用 PHP 动态的创建图象。
* 更多的其它功能！
1.3 PHP 需要花费多少钱？
PHP 是免费的。所有的源码、文档都可以免费的复制、编译、打印和分发。用户的任何一个用 PHP 编写的程序都属于用户自己，可以按照自己的意愿进行处理，而不需要付任何版税。就 PHP 本身而言，用户可以无限制地发布自己编写的程序。
然而，有着很充分的理由，PHP 并不是彻底的“公共领域”代码。如果 PHP 源码是完全的公共领域代码，很可能就有人对 PHP 的源码做很小的修改，然后编译并出售--换一句话说，从它的创作者中脱离出来。但从另一方面说，如果不公布源码，很难使想使用它的用户感到放心。
GNU 通用公共许可是一种发布免费软件的方法，它可以避免其他人占有你的劳动成果。在符合 GNU 许可的条件下，源码可以自由地发布，并且任何一个人都可以使用，但是任何来源于此代码的程序必须以同样种类的许可方式发布。换句话说，如果用户从任何 GNU 许可下的源码中得到代码而编写自己的程序，用户必须给任何想得到源码的人共布自己的源码。
1.4 PHP 语言可以嵌入 HTML 中
当使用者使用经典程序设计语言（如 C 或 Pascal）编程时，所有的代码必须编译成一个可执行的文件，然后该可执行文件在运行时，为远程的 Web 浏览器而产生可显示的 HTML 标记。但另一方面，PHP 并不需要编译（至少不编译成可执行文件）。使用者可以把自己的代码混合到 HTML 中。例如，下面的代码将显示“Hello,world!”，PHP 代码在下面以黑体字显示。
<HTML>
<HEAD><TITLE>Test</TITLE></HEAD>
<BODY>
<?PHP $string = 'world!'; ?>
<H1>Hello,<?php echo $string ?></H1>
</BODY>
</HTML>
PHP 应用程序服务器（本书的主要写作目的）是紧密集成到 Apache Web 服务器中的，可以在一个程序内同时调用它们两个。当 Web 浏览器请求 PHP Web 页面的时候，Web 服务器的 PHP 部分将被调用进行解释。Web 服务器在请求的 Web 页中寻找<?PHP . . . ?>标记，并按要求执行这些 PHP 代码。
由 PHP 代码生成的输出将替代<?PHP . . . ?>标记。例如，当 PHP 代码运行后，以前的 Web 页面将变成如下所示的内容：
<HTML>
<HEAD><TITLE>Test</TITLE></HEAD>
<BODY>
<H1>Hello,world!</H1>
</BODY>
</HTML>
注意，所有的 PHP 代码都消失了，仅仅留下了 HTML 语句。而由 PHP 代码生成的 HTML 语句在上例中以黑体的形式显示。
1.5 PHP 语言是在 Web 服务器端运行
当开发互联网应用程序时，很重要的一点是要清楚应用程序是在哪一端运行的。PHP 总是运行在服务器端。不要嘲笑对这一点的强调。在以后考虑对应用程序某些特性进行规划时，有的人可能就会在应用程序在哪里运行的这个问题上搞错，不要让自己也成为这些人中的一个。
由于 Java applets，ActiveX，或 Javascript 都是运行在客户端的 Web 浏览器中的，因此 PHP 不能直接和它们进行比较。然而可以很容易的将这些语言与 PHP 相结合在一起，使用 PHP 可以很方便地生成所需要的任何 HTML 代码，当然也就能激活 Java applets 和 ActiveX 控件，还可以动态生成 Javascript 语句。当对互联网应用程序开发还很陌生的时候，这也许没有什么意义，但是在读完这本书后，这一切就会变得十分清晰的了。
1.6 PHP 无处不在
无处不在是常使用的充满激情的词语，到 1999 年 7 月，将有 60 万左右的 Web 站点使用 PHP，1999 年夏天有关 Linux 和开放代码运动的大发展很可能使 PHP 团体有突破性发展。可以在 http://www.php.net/usage.php3 站点上看到它的发展趋势图表。
此外，PHP 邮件列表每天能收到大约 80 个电子邮件，每个月能收到大约 2500 个电子邮件，这说明 PHP 是一个非常活跃的开发团体。使用 PHP 的商业公司有以下几个，Mitsubishi Motors、Volvo、Red Hat Software、E*Trade、First USA Bank、the San Francisco Giants 和 San Diego Zoo 等等。
1.7 PHP 和 C 或 Java 相似吗？
PHP 程序和 C 程序有略微相似的地方，这是由于 PHP 来源于 C、Perl 和 Java。一些对 C 语言来讲比较麻烦的方面（如处理字符串的技术），由于采用了和 Perl 相近的技术，在 PHP 中就不再是麻烦了。PHP 中也不包括 Java 中的一些面向对象特性。
PHP 能很好地处理某些低级的任务，如果代码需要运行的特别快，可以很方便的使用 C 为 PHP 程序编写模块。
1.8 PHP 比 ColdFusion、Active Server Page 或 Java Server Page 更好吗？
以流行的商议方式，我总是回答，“可以是，也可以不是”。
回答是，是由于它的费用（免费）以及可以通过邮件列表、IRC 而在世界范围内有广泛的支持网络。同时 PHP 还在不断地发展着，如果想要一个 PHP 现在没有的特性时，请等待几个月，就有人很快为 PHP 编程而加上此种特性。
回答不是，是由于商业软件有比 PHP 更多的特性。例如，Allaire's ColdFusion 有一个已证实可靠的搜索引擎组件。微软的 Active Server Page 技术提供了与 Outlook、电子邮件和工作组程序相结合的能力。Java Server Page 让使用者可以使用互联网上的大量开放源码模块。
1.9 总结
对于遍及互联网上的 PHP，本章仅仅简要提到了它的一些特性，本章也介绍了当设计互联网应用程序时，PHP 为什么是最好的编程工具之一的原因。
下一章“安装 PHP”将一步一步的介绍了 PHP 的编译过程、安装过程以及测试过程。