1.2.1 PHP的发展历史和特点

PHP于1994年由拉斯马斯·勒德尔夫(Rasmus Lerdorf,也称为“PHP之父”)创建,为了维护个人网页,他用Perl语言编写了一个用来显示个人履历以及统计网页流量的程序,后来他又用C语言重新编写了此程序,增加了访问数据库等功能。他将这些程序和一些表单编译器整合起来,称为PHP/FI(专为个人主页/表单提供解释程序的程序)。

1.PHP的发展

勒德尔夫在1995年6月8日将PHP/FI公开发布,并发布了PHP/FI的源代码,以便每个人都可以使用它,同时也都可以修正它的错误并且改进它的源代码。此版本已经有今日PHP的一些雏形,像是类似Perl的变量命名方式、表单处理功能,以及嵌入HTML中执行的能力。其语法也类似Perl的,有较多的限制,不过相比Perl更简单、更有弹性。后来越来越多的网站使用PHP,网站开发人员强烈要求PHP能增加一些特性,比如循环语句和数组变量等,在社群新的成员加入开发行列之后,1995年,PHP 2.0发布了。第二版定名为PHP/FI 2.0。PHP/FI 2.0加入了对MySQL的支持,从此建立了PHP在动态网页开发上的地位。到了1996年年底,有15 000个网站使用PHP/FI 2.0;1997年,使用PHP/FI2.0的网站数量超过50 000。1997年,PHP第三版的开发计划启动,并于1998年6月正式发布PHP 3.0。2000年5月,PHP 4.0问世,其除具备更高的性能以外,还包含一些关键功能,比如支持更多的Web 服务器、HttpSession、输出缓冲、更安全的用户输入、面向对象编程以及一些新的语言结构。2004年7月,PHP 5.0正式发布,其核心是Zend引擎2代,引入了新的对象模型和大量的新功能。2015年12月3日,PHP 7.0正式发布,对比PHP 5.6,其性能整整提升了2倍,并且引入了类型声明,支持匿名类。2020年11月26日,PHP 8.0正式发布,它对各种变量判断和运算采用更严格的验证判断模式,支持即时编译,新增static类型、mixed 类型、命名参数和注释等。

2.PHP的特点

无论是用于开发中小型项目还是大型项目,PHP都是一门十分合适的高级编程语言。对于较大的和较复杂的项目,若采用PHP-FPM编程模式,最简单的方案就是及时升级版本,比如PHP 7.4提供的Preloading (预加载)机制实现了部分程序常驻内存,获得了不错的性能提升;PHP 8又提供了高效的准时生产(Just-In-Time,JIT)运算支持。另外,可以转向难度更高的PHP-CLI编程模式,它能解决大部分的系统性能问题,可以在TCP(Transmission Control Protocol,传输控制协议)/UDP(User Datagram Protocol,用户数据报协议)服务、高性能Web、WebSocket服务、物联网、实时通信、游戏、微服务等非Web领域进行系统研发。

PHP之所以应用广泛,受到大众欢迎,是因为它具有很多突出的特点,具体如下。

(1)开源、免费

PHP遵循GNU计划,开放源代码,所有的PHP源代码都可以获取到,和其他语言相比,PHP本身就是免费的。另外,Linux + Apache/Nginx + MySQL + PHP是非常经典的安装部署方式,相关软件全部是开源、免费的,因此使用PHP可以节约大量的授权费用。

(2)快捷、高效

PHP的内核是用C语言编写的,基础好、效率高,可用C语言开发高性能的扩展组件。PHP的内核包含数量众多的内置函数,功能应有尽有,非常全面,程序代码简洁。PHP数组支持动态扩容,支持以数字、字符串或者数字和字符串混合键名的关联数组,能大幅提高开发效率。

(3)性能提升

PHP版本越高,它的整体性能越强。

(4)常驻内存

在 PHP-CLI 编程模式下,可以实现程序常驻内存,各种变量和数据库连接均能长久保存在内存以实现资源复用,可以结合Swoole组件编写CLI(Command Line Interface,命令行界面)框架,高效实现大型项目。

(5)跨平台性

PHP的跨平台性很好,用它编写的程序方便移植,在UNIX、Linux、Android和Windows平台上都可以运行。

(6)图像处理能力强

PHP提供了丰富的图像处理函数,有强大的图像处理能力。PHP处理图像默认使用GD(图像处理库), GD库是PHP处理图像的扩展库,提供了一系列用来处理图片的函数,可以处理图片、生成图片或给图片添加水印等。GD库可以从官方网站下载使用。如果使用的是PHP集成开发环境(如phpStudy、WampServer等),就不需要下载,因为在集成开发环境下,GD函数库已经被加载,可以直接使用。

(7)支持多种数据库

由于PHP支持开放式数据库互连(Open Database Connectivity,ODBC)、数据库抽象层、PHP数据对象(PHP Data Objects,PDO),因此PHP几乎可以连接任何数据库。其中PHP与MySQL是“最佳搭档”,使用得最多。

(8)面向对象

PHP提供了类和对象的特征。用PHP开发程序时,可以选择面向对象编程,因此PHP完全可以用来开发大型商业程序。