展开菜单
首页 精品内容 本月促销 装机必备 Windows macOS软件 IOS软件 Android AI PDF教程 专题
全部分类

当前位置:

首页 > 编程开发 > [PHP] 浅谈PHP之美

[PHP] 浅谈PHP之美

PHP自1994年诞生,经历面向过程到面向对象的演进,语法简单灵活、数组功能强大、弱类型便捷、函数库丰富、扩展能力强,凭借LAMP组合和开源社区在Web开发中占据重要地位,但也存在不适合大型企业、缺乏多线程等不足。

先来盘一下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——你真的都搞懂了吗?

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

本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
编程开发 PHP
相关文章 更多
精品专题 更多
本月促销

正软商城本月促销专区,汇集办公、设计、安全、影音、系统工具及AI软件等正版软件优惠活动,提供限时折扣、特价授权和优惠购买信息,活动库存及价格以页面实时展示为准。

装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

IOS软件

正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

AI

正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
灵活计算器
灵活计算器

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

图几
图几

图几是一款适用于 macOS 的截图、标注与美化工具,支持离线操作保障隐私。界面整理和高频系统操作被放到一起考虑,桌面或窗口内容一多时,管理起来会更省心。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

Menuist
Menuist

Menuist 是一款面向 macOS 的 Finder 右键菜单增强工具,主要用来补充新建文件、快捷导航等常用操作,让日常文件管理和访问路径时更高效、更顺手。

Mole
Mole

Mole 是一款专为 Mac 设计的深度清理优化工具,涵盖缓存清理、应用管理及实时状态监控等功能。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

WINDOWS 更多
Windows 10
Windows 10

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

傲梅轻松备份
傲梅轻松备份

傲梅轻松备份是一款专业易用的数据备份软件,为重要数据提供安全保障。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Wise Folder Hider Pro
Wise Folder Hider Pro

Wise Folder Hider Pro 是一款专业级文件和文件夹隐藏加密软件,为私密数据添加多重保护。高频操作更强调就近处理,浏览、整理和跨目录移动文件时,来回切换和重复点击都会少很多。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

PinStack
PinStack

PinStack是一款轻量级的Windows平台剪贴板管理工具,优化您的剪贴板使用体验。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

Seer
Seer

Seer是一款在Win平台下的空格键功能增强效率工具,只需轻敲空格键,就能预览几乎任何格式的文件。它更适合把零散的小功能集中起来使用,处理高频琐碎任务时会更省事。