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

当前位置:

首页 > 编程开发 > 详解PHP

详解PHP

PHP是一种服务器端脚本语言,开源免费,语法借鉴C语言并融合Java等特色,支持面向对象与面向过程。1994年诞生,历经多个版本迭代,PHP7和PHP8性能显著提升,尤以PHP7.0较5.6提升2倍。广泛应用于Web开发,占服务器端编程语言78.9%份额,支持跨平台及常驻内存模式。

PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。它的语法学习了C语言,吸纳了Ja va和Perl等多个语言的特色,逐渐发展出自己的风格,并且持续改进——比如Ja va的面向对象编程就被很好地融合了进来。当初创建PHP的主要目标,就是让开发人员能快速写出优质的Web网站。[1][2] 它同时支持面向对象和面向过程的开发,用起来非常灵活。

软件名称:PHP
软件平台:Windows、Linux、Unix、macOS等
上线时间:1995年
最近更新时间:2021年7月1日
软件语言:PHP

发展历程

PHP是一个拥有众多开发者的开源软件项目,最初是Personal Home Page的缩写,后来正式更名为“PHP: Hypertext Preprocessor”。1994年,Rasmus Lerdorf为了统计自己网站访问者数量,用Perl写了个简单程序,这就是PHP的雏形。后来他用C语言重新编写,并加入了数据库访问功能。1995年,PHP(Personal Home Page Tools)对外发布了第一个版本PHP1。之后,越来越多的网站开始使用PHP,用户强烈要求增加循环语句、数组变量等特性,于是在1995年发布的PHP2中加入了MySQL的支持。

Andi Gutmans和Zeev Suraski在为大学项目开发电子商务程序时,发现PHP2功能明显不足,于是重写了代码,发布了PHP3。PHP3是第一个具有现代PHP语法结构的版本,它最强大的地方在于可扩展性——新增的功能和广泛的第三方数据库、API支持,让各种程序的编写成为可能。

PHP3发布不久,Andi Gutmans和Zeev Suraski又开始重新编写PHP代码,目标是增强复杂程序运行时的性能和代码的模块化。经过不懈努力,Zend引擎研发成功,并于1999年中期引入PHP。基于该引擎,并结合更多新功能的PHP4于2000年5月正式发布。除了更高的性能,PHP4还包含一些关键功能:支持更多Web服务器、HTTP Sessions支持、输出缓冲、更安全的用户输入,以及一些新的语言结构。

PHP5于2004年7月正式发布,核心是Zend引擎2代(PHP7是Zend加强版3代),引入了新的对象模型和大量新功能,开始支持面向对象编程。PHP6经历了一段漫长的开发流产后,最终被放弃,但PHP5.6已经包含了很多PHP6想实现的特性,为PHP7的研发争取了宝贵时间。2015年12月3日,PHP 7.0发布,性能相比PHP5.6整整提升了2倍,这一成功让很多核心开发成员回归社区。2020年11月26日,PHP8发布。与PHP7系列相比,PHP8对各种变量判断和运算采用了更严格的验证模式,这为后续版本的JIT性能优化打下了基础。

PHP作为一种高级语言,最大的特点是开源,在设计上属于C语言体系。这让很多接受过高等教育的初学者能很快上手,入门简单、容易找工作,自然粉丝众多。如果数据量大、访问压力大,可以集成Redis、MySQL分表分区分库、Elasticsearch搜索引擎、消息队列写保护以及PHP系统分布式集群部署等技术方案,来缓解数据存储、服务访问和数据检索的压力。

无论是大中小型项目,PHP都是一个非常合适的高级编程语言,关键就看项目团队对它的掌握程度。但对于较大、较复杂的项目,最常见的php-fpm编程模式就暴露出一些薄弱之处。针对这些问题,最简单靠谱的方案就是及时升级到兼容的高版本——PHP7.0相比PHP5.6性能提升了2倍,PHP7.4提供的Preloading预加载机制实现了部分程序常驻内存,获得了不错的性能提升,PHP8又提供了高效的JIT(Just-In-Time即时编译)支持。另外,水平更高的开发者可以转向难度更高的php-cli编程,它能解决大部分系统性能问题,PHP7和PHP8都支持这种模式。

经过二十多年的发展,随着php-cli相关组件的快速发展和完善,PHP已经可以应用在TCP/UDP服务、高性能Web、WebSocket服务、物联网、实时通讯、游戏、微服务等非Web领域的系统研发中。

根据W3Techs 2019年12月6日发布的统计数据,PHP在Web网站服务器端使用的编程语言中所占份额高达78.9%。在内容管理系统的网站中,有58.7%的网站使用WordPress(PHP开发的CMS系统),这占所有网站的25.0%。

语言特点

开源免费

PHP是一个受众巨大、拥有众多开发者的开源软件项目。Linux + Nginx + MySQL + PHP是它的经典部署方式,相关软件全部开源免费,使用PHP可以省下大笔正版授权费用。不过,作为开源软件,PHP缺乏大型科技公司的支持背景,网络上唱衰的声音经久不衰。但它的持续迭代和性能持续增强的现实却鼓舞人心,PHP社区用实际行动给出了强有力的回击。

快捷高效

PHP的内核由C语言编写,基础好、效率高,可以用C语言开发高性能的扩展组件。核心内置函数超过1000个,功能应有尽有,开箱即用,代码简洁。PHP数组支持动态扩容,支持数字、字符串或混合键名的关联数组,大幅提升开发效率。作为一门弱类型语言,编译通过率高,相比其他强类型语言开发效率快。此外,PHP天然支持热部署——在php-fpm模式下,代码文件覆盖即完成热部署。经过20多年发展,互联网上可以搜到海量参考资料供学习参考。

性能提升

PHP版本越高,整体性能越强。根据官方介绍,PHP 7.0.0对比PHP5.6性能提升了2倍,PHP7.4比PHP7.0快了约30%,PHP8.0在性能上又相对PHP7.4改进了大约10%。PHP 8.0引入了JIT编译器特性,同时加入了命名参数、联合类型、注解、Constructor Property Promotion、match表达式、nullsafe运算符,以及对类型系统、错误处理和一致性的改进。PHP拥有自己的核心开发团队,保持5年一个大版本、1个月更新2个小版本的频率,最新的版本是PHP 8.0.8。PHP 7.0.0发布于2015年12月3日,此版本下最新版本是PHP 7.4.21(2021年7月1日);PHP 8.0.0发布于2020年11月26日,此版本下最新版本是PHP 8.0.8(2021年7月1日)。

跨平台

每个平台都有对应的PHP解释器版本,针对不同平台编译出目标平台的二进制码(PHP解释器)。PHP开发的程序可以不经修改,运行在Windows、Linux、Unix等多个操作系统上。

常驻内存

php-cli模式下可以实现程序常驻内存,各种变量和数据库连接都能长久保存在内存中实现资源复用。比较常用的做法是结合Swoole组件编写CLI框架。

页面生命周期

在php-fpm模式下,所有变量都是页面级的——无论是全局变量还是类的静态成员,都会在页面执行完毕后被清空。这种模式对程序员水平要求低,占用内存非常少,特别适合中小型系统的开发。

运行机制

PHP常见的运行模式有两种:php-fpm和php-cli。当PHP运行在php-fpm模式下,所有变量都是页面级的,执行完毕后被清空。运行在php-cli模式下,程序可以常驻内存,各种变量和数据库连接都能长久保存在内存中实现资源复用,性能得到很大提升。php-cli虽然开发比较复杂,但能获得更高的性能,对开发者要求较高,比较常用的做法是结合Swoole组件编写CLI框架,各种变量能保存在跨进程的高性能共享内存Table中,可以开发出支持热启动的php-cli可靠应用系统。

php-fpm在PHP 5.3.3版本(2010年7月22日)成为官方正式组件。它提供了稳定可靠的进程管理服务——进程不足时智能扩充,闲置时自动回收销毁多余进程,同时对程序的容错能力很强,运行非常稳定,可以应付企业级开发需求。php-fpm能很好地处理通过HTTP/HTTPS等TCP/IP协议进行的用户输入输出,页面级生命周期各种资源用完即释放,不存在内存泄漏问题。php-fpm也提供一些常驻内存的技术支持,例如PHP 7.4引入的opcache.preload能实现局部PHP类和函数的常驻内存,不过这个方法不够灵活,和服务器配置捆绑得太死。

php-cli因为能实现各类资源的常驻内存,所以可以资源复用,更高效地完成多进程编程和异步编程,开发出负载能力更高的应用系统。但相比php-fpm的简单编程,开发者需要注意很多事项,并做很多附加的控制器开发,否则无法实现期待中的高性能。

首先,开发者需要实现可靠的进程管理服务,保证系统进程遇到各类错误退出后能自动创建新进程,这样才能保证后续服务请求有足够空闲进程可分配。每个业务代码段都要做异常处理,让进程遇到非致命错误时不会退出——因为进程重启意味着程序和各类资源需要再次加载,这个过程的性能消耗不小。只有进程稳定运行,常驻内存才有意义。

其次,因为常驻内存,编写的新程序必须重启服务才能生效,这一点习惯了fpm模式的开发者会感到陌生。另外,开发者需要手工释放内存,否则系统长时间运行后会出现内存泄漏。同时在CLI模式下,不能像fpm里直接用$_SERVER、$_POST、$_GET、$_COOKIE和$_FILES进行编程,需要自己去解析各种互联网通讯协议完成用户的输入输出。要实现多进程编程利用多核CPU计算,还要学习使用pcntl和posix编程,这里涉及异步编程逻辑,难度较大。比较常用的做法是结合Swoole组件编写CLI框架。

PHP是一个活跃的社区开发语言,有专业的核心开发团队在持续不断地迭代,最新版本PHP 8.0.8引入了很多新特性。

参考框架

(一)WordPress内容管理系统(CMS)

功能强大、扩展性强,易于扩充功能;搭建的博客对SEO搜索引擎友好,收录快、排名靠前;网站主题丰富,各色各样应有尽有;有强大的社区支持,上千万的开发者贡献和审查代码。

(二)Hyperf

Hyperf 是一个基于Swoole的高性能、高灵活性的渐进式PHP协程框架,内置协程服务器及大量常用组件,性能较传统基于PHP-FPM的框架有质的提升。在提供超高性能的同时,也保持着极其灵活的可扩展性,标准组件均基于PSR标准实现,基于强大的依赖注入设计,保证了绝大部分组件或类都是可替换与可复用的。

(三)ThinkPHP

ThinkPHP是一个快速、兼容且简单的轻量级国产PHP开发框架,最早诞生于2006年初,遵循Apache2开源协议发布。秉承简洁实用、出色性能和至简的代码,注重易用性。拥有众多原创功能和特性,在社区团队的积极参与下,易用性、扩展性和性能方面不断优化改进。

(四)Drupal

Drupal诞生于2000年,是一个基于PHP语言编写的开发型CMF(内容管理框架),即CMS + framework。Drupal的架构由三大部分组成:内核、模块、主题,三者通过Hook机制紧密联系。可自由配置,能支持从个人博客到大型社区驱动网站等各种不同应用的网站项目。

(五)EasySwoole

EasySwoole是一款常驻内存型的国产分布式Swoole框架,支持同时混合监听HTTP、WebSocket、自定义TCP、UDP协议,拥有丰富的组件,例如协程连接池、协程Kafka客户端、协程ElasticSearch客户端、协程Redis客户端、协程自定义队列、协程Memcached客户端、协程HTTP客户端、Crontab定时器等。

(六)Lara vel

Lara vel是一套简洁、优雅的PHP Web开发框架。它可以让你从面条一样杂乱的代码中解脱出来,帮你构建一个不错的网络APP,而且每行代码都可以简洁、富于表达力。

(七)CakePHP

CakePHP设计层面很优雅,没有自带多余的library,所有功能都是纯粹的框架,执行效率还不错。

(八)imi

它可以运行在PHP-FPM、Swoole、Workerman多种容器环境下。

语言参考

内置函数

PHP有很多标准的函数和结构。还有一些函数需要和特定的扩展模块一起编译,否则在使用它们时就会得到一个致命的“未定义函数”错误。例如,要使用image函数中的imagecreatetruecolor(),需要在编译PHP时加上GD的支持;要使用mysqli_connect()函数,就需要在编译PHP时加上MySQLi支持。很多核心函数已包含在每个版本的PHP中,如字符串和变量函数。调用phpinfo()或get_loaded_extensions()可以得知PHP加载了哪些扩展库。同时,很多扩展库默认就是有效的。

在PHP编程中,用户输入安全非常重要,对用户各个方面的输入都要做好过滤处理。内置函数里提供了不少安全相关的函数,编程学习者需要重点掌握以下7个重点函数:

  • htmlentities — 将字符转换为HTML转义字符
  • htmlspecialchars_decode — 将特殊的HTML实体转换回普通字符
  • htmlspecialchars — 将特殊字符转换为HTML实体
  • nl2br — 在字符串所有新行之前插入HTML换行标记
  • str_replace — 子字符串替换
  • strip_tags — 从字符串中去除HTML和PHP标记
  • stripslashes — 反引用一个引用字符串

预定义变量对于全部脚本而言,PHP提供了大量的预定义变量。这些变量将所有的外部变量表示成内建环境变量,并将错误信息表示成返回头。在PHP编程中经常需要用到的预定义变量如下:

$GLOBALS — 引用全局作用域中可用的全部变量
$_SERVER — 服务器和执行环境信息
$_GET — HTTP GET 变量(用户输入之一)
$_POST — HTTP POST 变量(用户输入之一)
$_FILES — HTTP 文件上传变量
$_SESSION — Session 变量(用户会话)
$_COOKIE — HTTP Cookies(用户会话标识)

数据类型

PHP支持10种原始数据类型。四种标量类型:bool(布尔型)、int(整型)、float(浮点型,也称作double)和string(字符串);四种复合类型:array(数组)、object(对象)、callable(可调用)和iterable(可迭代);最后是两种特殊类型:resource(资源)和NULL(无类型)。

运算符

运算符是通过给出一个或多个值(表达式)来产生另一个值(从而整个结构构成一个表达式)的东西。PHP的运算符包含:运算符优先级、算术运算符、赋值运算符、位运算符、比较运算符、错误控制运算符、执行运算符、递增/递减运算符、逻辑运算符、字符串运算符、数组运算符和类型运算符。

流程控制

任何PHP脚本都是由一系列语句构成的。一条语句可以是一个赋值语句、一个函数调用、一个循环、一个条件语句,甚至是一个什么也不做的空语句。语句通常以分号结束,此外还可以用花括号将一组语句封装成一个语句组,语句组本身可以当作是一行语句。

类与对象

每个类的定义都以关键字class开头,后面跟着类名,再后面跟着一对花括号,里面包含类的属性与方法的定义。类名可以是任何非PHP保留字的合法标签。一个合法类名以字母或下划线开头,后面跟着若干字母、数字或下划线。以正则表达式表示为:^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$。一个类可以包含属于自己的常量、变量(称为“属性”)以及函数(称为“方法”)。要创建一个类的实例,必须使用new关键字。当创建新对象时,该对象总是被赋值,除非该对象定义了构造函数并且在出错时抛出了一个异常。类应在被实例化之前定义(某些情况下则必须这样)。如果在new之后跟着的是一个包含有类名的字符串,则该类的一个实例被创建。如果该类属于一个命名空间,则必须使用其完整名称。

命名空间

在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码(如类或函数)时碰到的两类问题:用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突,以及为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建别名(或简短)的名称,提高源代码的可读性。PHP命名空间提供了一种将相关的类、函数和常量组合到一起的途径。

【参考资料出处:百度百科】

本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
编程开发 PHP
相关文章 更多
精品专题 更多
装机必备

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

Windows

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

macOS软件

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

IOS软件

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

AI

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

Mac软件 更多
photoshop
photoshop

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器

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

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

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

极度公式
极度公式

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

图几
图几

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

密码键盘
密码键盘

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

思源笔记
思源笔记

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

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

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

Mac
WALTR PRO
WALTR PRO

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

CodeExpander
CodeExpander

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

Mountain Duck
Mountain Duck

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

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

Windows 10
Windows 10

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

极度公式
极度公式

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

密码键盘
密码键盘

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

思源笔记
思源笔记

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

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

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

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

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

Mac
Wise Folder Hider Pro
Wise Folder Hider Pro

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

WALTR PRO
WALTR PRO

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

CodeExpander
CodeExpander

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