商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > [PHP] 浅谈PHP之美

[PHP] 浅谈PHP之美

  发布于2026-07-09 阅读(0)

扫一扫,手机访问

先来盘一下PHP的历史坐标。

1994年,Rasmus Lerdorf最初用Perl写了一个网站维护和流量统计的小工具——这就是PHP的雏形。次年用C重写,PHP 1.0发布。1997年,以色列的两位开发者Zeev Suraski和Andi Gutmans重写了PHP编译器,1998年推出PHP 3。2000年,基于Zend Engine 1.0内核的PHP 4发布,在那之前PHP还只是面向过程的。2004年PHP 5面世,正式踏入面向对象阵营,也是从这个时候开始,PHP在国内迎来了空前发展。到2013年,PHP最新版本到了5.5.7,而当时很多线上环境还在用5.3.25——命名空间、新的垃圾回收机制、内置php-fpm等特性就是那个阶段的关键词。2014年10月,官方鼓励用户升级到PHP 5.6,同年PHP 7的开发被提上议程,号称要打破一切。

目前PHP由Zend公司支持、由社区主导开发。相比Ja va落户Oracle,PHP多少有点“草根”出身,但近几年引入面向对象之后,发展的势头还是相当可观的。

那么问题来了:PHP凭什么能在Web开发中占据一席之地?背后肯定有它的道理。

门槛低?是的,上手确实快——但任何程序开发一旦深入,计算机和软件工程的基础体系还是要补齐的。开发、部署、调试极其方便快速,很多大型互联网公司愿意用PHP,这一点是关键原因。它也非常适合中小型Web网站,说白了就是创业公司的好搭档。除此之外,PHP还是大型Web系统的粘合剂,同时非常适合基于Web的Linux系统管理。

PHP的全称是“PHP: Hypertext Preprocessor”,中文叫“超文本预处理器”。

PHP之美,到底美在哪儿

1. 语法简单灵活

每一种编程语言,都是基于某个特定环境、为了解决某一类问题而诞生的。就好比人类语言,是某个孤立的群体为了个体间有效沟通而形成的一样——编程语言本质上也是如此,只是人和计算机、计算机和计算机之间沟通的工具。

理论上,其他编程语言能做的事,PHP也都能实现。但PHP的强项就是Web开发——因为它是互联网浪潮到来时专门为此而生的。PHP能流行起来,简单易学的语法功不可没。学习PHP门槛低、上手快,这也促使大量非IT行业的人转行进来,以及其他语言的开发者转投PHP阵营。像百度这类大型互联网企业,每年都会录取大量科班出身的C或Ja va开发者,然后从零开始培训他们写PHP。

PHP语法基于C,又混合了Ja va、Perl以及自创的部分语法。说白了,PHP就是一个集编译、执行为一体的、用C实现的“大型程序软件”。语法规则简单灵活,使得开发、部署、调试极其便捷——这才是PHP最大的优势。毫不夸张地说,PHP能做到随写、随测、随时上线,这种特性是静态编译语言无法替代的。

2. 无所不能的数组

PHP中的数组实际上是一个有序映射——把值关联到键的类型。它包含索引数组和关联数组,所以完全可以把PHP数组当成真正的数组、列表(向量)、散列表(映射的一种实现)、字典、集合、栈、队列,甚至更多用法。key可以是整数或字符串,value可以是任意类型(注意key存在强制转换)。

更让人舒服的是,PHP提供了极其丰富的数组操作函数——拆分、合并、追加、查找、删除、排序,应有尽有。

3. 弱类型

弱类型意味着PHP并不严格验证变量类型。声明一个变量时,不需要显式指明它保存的数据类型。当然,弱类型有优势也有劣势,这里只说优势:

PHP的数据类型分为3类8种:整型、浮点型、布尔型、字符串(标量);索引数组/关联数组、对象(复合);资源、NULL(特殊)。

弱类型最大的好处是:开发者不用去关心变量类型,只要知道当前变量的值是不是自己需要的就够了。比如说程序有返回值时,可以直接用if ($return)来判断,或者用if ($test == 1)来比较——$test可以是TRUE、整数1、浮点1.0或字符'1'。

那么PHP是如何在Zend Engine(ZE)基础上实现弱类型的?关键在于zvalue_value是一个联合体(union),内部包含了整型、双精度浮点、字符串、哈希表和对象等不同类型的数据结构。对于ZE来说,它面对的永远是同一种类型——zval。借助这个机制,弱类型就实现了。

4. 函数库

用过PHP的开发者都知道,PHP自带大量系统内置函数。而且,应该尽可能使用内置函数——效率高。

5. 扩展能力

目前PHP的第三方包管理工具——PECL、PEAR、Composer等,包含了很多优秀的类包和扩展。很多功能模块可以直接拿来用,因为它们确实很成熟。除此之外,PHP的ZE内核对外提供了扩展接口,也就是说完全可以写C扩展,动态加载到PHP中使用——这样能提高性能。Yaf框架就是基于这个特性开发的。

6. LAMP组合

LAMP——Linux、Apache、MySQL、PHP,这个Web开发的黄金组合,乃至现在流行的LNMP,四个组件都是成功的开源软件。开源免费、基于Linux平台集成安装、适应互联网浪潮高效快速低成本——这几个因素让LAMP几乎所向无敌。

7. 开源及其社区

PHP的开源生态加上众多成熟活跃的社区,在Zend公司的带领下,PHP逐渐走向成熟。尤其是PHP 5.3之后,对更多场景和需求的适应能力也越来越强。

PHP的美中不足

1. 语法简单灵活也是一把双刃剑

PHP在一定程度上不太适合大型企业使用,部分原因就在这里。用过Ja va的开发者来看PHP,往往会觉得PHP太“弱”了——Ja va拥有成熟的平台、框架、规范、标准。但如果能做好规范、设计和架构,PHP同样可以胜任大型企业级应用。百度、新浪就是最好的实践案例。

2. 没有多线程,没有RPC

PHP语言设计上没有原生的多线程编程和RPC远程调用,但业界存在不少解决方案,比如curl/socket/YRC。

3. 不适合大计算量任务和长时间执行的任务

PHP的动态特性决定了它不适合去做常驻进程,也不适合处理大计算量任务——一是内存溢出问题,二是CPU使用问题。换句话说,PHP不适合CPU密集型应用程序。PHP的默认超时时间约定为30秒。

如何看待对PHP的质疑

1. PHP真的不适合开发企业级Web应用吗?

架构,架构,还是架构。适不适合企业级,不是开发语言说了算,而是整个架构设计说了算。在合适的地方用合适的东西,在合理的地方用最能发挥优势的东西。业界早已给出了答案:百度为什么把大量模块从C迁往PHP?淘宝为什么从LAMP架构迁往Ja va?新浪微博日均十亿的PV,为什么用LNMP?

2. PHP真的性能差吗?

开发语言在一定程度是不会最先成为性能瓶颈的。这个命题值得专门展开细聊。

3. PHP真的不适合职业发展吗?

很多开发者担心选择PHP会碰到职业发展瓶颈。还是那句话:作为开发,语言只是工具。那些核心概念——ZE、ZM、COW、设计模式、LB、CDN、LRC、RPC、SOA、分布式、CACHE、Restful、fastcgi、LOC——你真的都搞懂了吗?

总而言之,选择她,喜欢她,写有灵魂的代码和程序。让世界因此而不同。

本文转载于:https://blog.csdn.net/zxf0810/article/details/44006929 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注