PHP扩展简介
PHP目前提供了150多个扩展,PHP在安装之初也会默认安装很多扩展,下面是对PHP扩展的一些整理和简介。
扩展 | 介绍 |
---|---|
apcu | APCu是APC剥离的操作码缓存。 第一个APCu代码基的版本是4.0.0,它是从当时APC主分支的头派生出来的。 从APCu 5.0.0开始提供PHP 7支持。 APCu可以提供一种兼容模式,这样它就可以为APC的适用部分提供一个drop替换。 |
apcu-bc | |
bcmath | 对于任意精度的数学,PHP提供了支持用字符串表示的任意大小和精度的数字的二进制计算,最多为2147483647-1(或0x7FFFFFFF-1)。 |
bz | bzip2 函数用于透明地读写 bzip2(.bz2)压缩文件。 |
calendar | 历法扩展集包括了一系列用于在不同历法间进行转换的函数,它是以Julian Day计数为中介或标准来进行的。Julian Day计数是以公元前的4713年的1月1日为起点的一种计数法。为了在不同历法间进行转换,你首先要转换成Julian Day计数,然后再转换为你所需要的历法。Julian Day计数和Julian历法是非常不同的!Julian Day计数的更多信息可以参考» http://www.hermetic.ch/cal_stud/jdn.htm,历法系统的更多信息可以参考» http://www.fourmilab.ch/documents/calendar。 |
core | |
ctype | 该扩展所提供的函数用来检测 在当前的区域设定下(参见 setlocale()),一个字符或者字符串 是否仅包含指定类型的字符。 当使用整数作为参数调用这些函数的时候, 这些函数的行为和 C 语言(ctype.h) 中的对应函数一样。 也就是说,如果传入了小于 256 的整数参数,它会把这个整数当做 ASCII 码值, 来检测对应字符是否符合要求(数值检测的 ASCII 值范围为 0x30-0x39)。 如果传入的参数介于 -128 和 -1 之间(含 -128 和 -1),它会先将其加上 256,然后再进行检测。 当传入参数为字符串的时候,它会对字符串中的每个字符进行检测, 仅当字符串中的每个字符都符合指定条件的情况下才会返回 TRUE。 在 PHP 5.1 之前的版本中,如果传入空字符串总是会返回 TRUE, 从 PHP 5.1 开始,传入空字符串总是会返回 FALSE。 传入除整数和字符串之外的参数 会立即返回 FALSE。 需要提醒的是,如果可以满足需求,请优先考虑使用 ctype 函数, 而不是正则表达式或者对应的 “str_" 和 "is_” 函数。 因为 ctype 使用的是原生 C 库,所以会有明显的性能优势。 |
curl | PHP 支持 Daniel Stenberg 创建的 libcurl 库,能够连接通讯各种服务器、使用各种协议。libcurl 目前支持的协议有 http、https、ftp、gopher、telnet、dict、file、ldap。 libcurl 同时支持 HTTPS 证书、HTTP POST、HTTP PUT、 FTP 上传(也能通过 PHP 的 FTP 扩展完成)、HTTP 基于表单的上传、代理、cookies、用户名+密码的认证。 |
date | 你可以使用这些函数获取运行 PHP 的服务器的日期和时间, 也可以使用这些函数把日期和时间 格式化成不同格式的字符串。 日期和时间信息在 PHP 内部是以 64 位数字存储的, 它可以覆盖当前时间前后 2920 亿年的时间,这个范围之广,足以满足现有应用的实际需求。 Note: 需要注意的是, 这些函数都是依赖服务器的区域设置的, 所以在使用它们的时候,要考虑夏令时 (例如:使用 $date = strtotime(’+7 days’, $date) 而不是 $date += 72460*60) 和闰年的情况。 |
exif | 通过使用 exif 扩展,你可以操作图像元数据。 例如:你可以使用 exif 相关的函数从数码相机拍摄的图片文件中读取元数据。 通常 JPEG 和 TIFF 格式的图像文件都包含元数据。 |
fileinfo | 本模块中的函数通过在文件的给定位置查找特定的 魔术 字节序列 来猜测文件的内容类型以及编码。 虽然不是百分百的精确, 但是通常情况下能够很好的工作。 |
filter | 此扩展通过验证或消毒数据来过滤数据。当数据源包含未知(或外部)数据(如用户提供的输入)时,这特别有用。例如,该数据可能来自HTML表单。 过滤有两种主要类型:验证和消毒。 验证用于验证或检查数据是否满足某些条件。例如,传入FILTER_VALIDATE_EMAIL将确定该数据是否是有效的电子邮件地址,但不会更改数据本身。 无害化处理会对数据进行无害化处理,因此它可以通过删除不需要的字符来修改数据。例如,传FILTER_SANITIZE_EMAIL将删除不适合电子邮件地址包含的字符。也就是说,它不验证数据。 标记可与验证和清理一起选择使用,以根据需要调整行为。例如,在过滤URL时传入FILTER_FLAG_PATH_REQUIRED将需要一个路径(比如http://example.org/foo)中的出现。 |
ftp | 本扩展中的函数实现了通过 FTP 协议访问文件服务器的客户端。 FTP 协议在 » http://www.faqs.org/rfcs/rfc959 中定义。 本扩展提供了对于 FTP 服务器完整的访问及控制功能。 如果只是简单的从 FTP 服务器读取或向服务器写入一个文件, 请考虑使用 ftp:// 包装器 和 文件系统函数, 会更加的简单。 |
geoip | GeoIP 扩展可以通过 IP 地址来确定地理位置。比如城市、州、国家、经度、纬度以及其他信息,比如 ISP (因特网服务提供商)和网络连接类型。 |
gettext | gettext函数实现了NLS (Native Language Support) API,他可以用来国际化您的PHP程序. 请参阅gettext的文档,为您的系统进行国际化功能的详尽的解释 或查看文档 » http://www.gnu.org/software/gettext/manual/gettext.html. |
GD | PHP 并不仅限于创建 HTML 输出, 它也可以创建和处理包括 GIF, PNG, JPEG, WBMP 以及 XPM 在内的多种格式的图像。 更加方便的是,PHP 可以直接将图像数据流输出到浏览器。 要想在 PHP 中使用图像处理功能,你需要连带 GD 库一起来编译 PHP。 GD 库和 PHP 可能需要其他的库, 这取决于你要处理的图像格式。 你可以使用 PHP 中的图像函数来获取下列格式图像的大小: JPEG, GIF, PNG, SWF, TIFF 和 JPEG2000。 如果联合 exif 扩展 一起使用, 你可以操作存储在 JPEG 和 TIFF 图像文件头部的信息, 这样就就可以获取数码相机所产生的元数据。 exif 相关的函数不需要 GD 库亦可使用。 |
hash | 信息摘要(哈希)引擎。允许使用各种哈希算法直接或增量处理任意长度的信息。 |
iconv | 此模块包含了 iconv 字符集转换功能的接口。 使用此模块,你可以将一个本地字符集表达的字符串转换成另一种字符集,比如可以是 Unicode 字符集。 支持的字符集基于你系统上 iconv 的实现。 注意,在某些系统上 iconv 函数可能无法以你预期的那样工作。 在这种情况下,安装 » GNU libiconv 库将会是个不错的主意。 它最终将会产生更一致的结果。 自 PHP 5.0.0 起,配备了这个具有多种实用功能的扩展,来帮助您编写多语言脚本。 |
igbinary | PHP 第三方序列化扩展 igbinary。igbinary 是一个 php 的第三方扩展,相对于 php 自带的 serialize,igbinary 具有性能高,节省空间的特点,在某些高要求的场景中使用它是个不错的方案。 igbinary 使用一些对应标记和信息分隔变量中数组的键名和值等其它内容,并且依赖这些标记信息进行反序列化。更多了解>> |
imagick | imagick 是用 ImageMagic API 来创建和修改图像的PHP官方扩展。 ImageMagick® 是用来创建,编辑,合并位图图像的一套组件。 它能够用于读取,转换,写入多种不同格式的图像。 包含 DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, 和 TIFF。 |
imap | 这些函数提供了可以操作 IMAP 以及 NNTP,POP3 和本地邮箱的方法。 注意,有些 IMAP 函数在 POP3 协议下将不能正常的工作。 |
json | 本扩展实现了 » JavaScript对象符号(JSON) 数据转换格式。 PHP 5 中的解码分析器基于 Douglas Crockford 的 JSON_checker。 PHP 7 中是改进的全新解析器,专门为 PHP 订制,软件许可证为 PHP license。 |
ldap | LDAP是轻型目录访问协议,并且是用于访问“目录服务器”的协议。目录是一种特殊的数据库,它以树状结构保存信息。 该概念与您的硬盘目录结构相似,除了在这种情况下,根目录是“世界”,而第一级子目录是“国家”。目录结构的较低级别包含公司,组织或场所的条目,而目录结构的较低层次则包含人员,设备或文档的目录条目。 要引用硬盘上子目录中的文件,您可以使用以下方法: /usr/local/myapp/docs 正斜杠标记参考中的每个分区,并且从左到右读取序列。 等同于LDAP中的标准文件引用是“专有名称”,简称为“ dn”。dn的示例可能是: n=John Smith,ou=Accounts,o=My Company,c=US 逗号标记参考中的每个分区,并且从右到左读取顺序。您将这个dn读为: country = US organization = My Company organizationalUnit = Accounts commonName = John Smith 就像没有关于如何组织硬盘的目录结构的硬性规则一样,目录服务器管理器可以建立任何有意义的结构。但是,有一些约定。消息是,除非您对目录服务器的结构有所了解,否则您将无法编写代码来访问目录服务器,这超出了在不了解可用内容的情况下可以使用数据库的范围。 |
libxml | 这些函数/常数可用的PHP 5.1.0,和以下核心扩展依赖于此libxml扩展:DOM, libxml, SimpleXML, SOAP, WDDX, XSL, XML, XMLReader, XMLRPC 和 XMLWriter. |
mbstring | 虽然许多语言每个必要字符都能一对一映射到 8 比特(bit)的值,但也有好几种语言需要非常多的字符来书面通讯,以至于它们的编码范围不能仅仅包含在一个字节里(一个字节 Byte 由 8 比特 bit 构成。每一比特仅能包含两种不同的值: 1 或 0。所以,一字节仅能够表示 256 种不同的值,即 2 的八次方)。 开发多字节字符编码方案是为了在基于字节的常规编码系统中表达超过 256 个字符。 在你操作(trim、split、splice 等等)多字节编码的字符串的时候,由于在这种编码方案下,两个或多个连续字节可能只表达了一个字符,所以你需要使用专门的函数。 否则,当你将不能检测多字节字符串的函数应用到这个字符串的时候,它可能无法检测多字节字符的起始位置,并以乱码字符串结尾,基本丢失了它原来的意思。 mbstring 提供了针对多字节字符串的函数,能够帮你处理 PHP 中的多字节编码。 除此以外,mbstring 还能在可能的字符编码之间相互进行编码转换。 为了方便起见,mbstring 设计成了处理基于 Unicode 的编码,类似 UTF-8、UCS-2 及诸多单字节的编码 |
mcrypt | mcrypt 是php里面重要的加密支持扩展库,linux环境下该库在默认情况下不开启。window环境下,PHP>=5.3,默认开启mcrypt扩展。 PHP程序员们在编写代码程序时,除了要保证代码的高性能之外,还有一点是非常重要的,那就是程序的安全性保障。PHP除了自带的几种加密函数外,还有功能更全面的PHP加密扩展库Mcrypt和Mhash。 其中,Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。更多了解>> |
memcached | » memcached是一个高性能分布式的内存对象缓存系统, 通常被用于降低数据库加载压力以提高动态web应用的响应速度。 此扩展使用了libmemcached库提供的api与memcached服务端进行交互。它同样提供了一个session处理器(memcached)。 它同时提供了一个session处理器(memcached)。 |
mssql | 这些函数允许您访问MS SQL Server数据库。 此扩展在PHP 5.3或更高版本的Windows上不再可用。 该特性在PHP 7.0.0中被删除。 |
mysqlnd | MySQL本机驱动程序是MySQL客户端库(libmysqlclient)的替代品。MySQL原生驱动程序是PHP 5.3.0官方PHP源码的一部分。MySQL数据库扩展MySQL扩展,mysqli和PDO MySQL都与MySQL服务器通信。在过去,这是通过扩展使用MySQL客户端库提供的服务来实现的。这些扩展是根据MySQL客户端库编译的,以便使用它的客户端-服务器协议。 有了MySQL本地驱动程序,现在就有了一个替代方案,因为MySQL数据库扩展可以被编译为使用MySQL本地驱动程序,而不是MySQL客户端库。 MySQL本机驱动程序是用C编写的PHP扩展。 |
opcache | OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。 PHP 5.5.0 及后续版本中已经绑定了 OPcache 扩展。 对于 PHP 5.2,5.3 和 5.4 版本可以使用 » PECL 扩展中的 OPcache 库。 |
openssl | 本扩展使用 » OpenSSL 库来对称/非对称加解密,以及 PBKDF2、 PKCS7、 PKCS12、 X509 和其他加密操作。除此之外还提供了 TLS 流的实现。 OpenSSL 还提供了更多本模块暂不支持的功能,某些功能以后可能会增加。 |
pcntl | PHP的进程控制支持实现了Unix方式的进程创建, 程序执行, 信号处理以及进程的中断。 进程控制不能被应用在Web服务器环境,当其被用于Web服务环境时可能会带来意外的结果。 这份文档用于阐述每个进程控制函数的通常用法。关于Unix进程控制的更多信息建议您查阅 系统文档中关于fork(2),waitpid(2),signal(2)等的部分或更全面的参考资料比如 《Unix环境高级编程》(作者:W. Richard Stevens,Addison-Wesley出版)。 PCNTL现在使用了ticks作为信号处理的回调机制,ticks在速度上远远超过了之前的处理机制。 这个变化与“用户ticks”遵循了相同的语义。您可以使用declare() 语句在程序中指定允许发生回调的位置。这使得我们对异步事件处理的开销最小化。在编译PHP时 启用pcntl将始终承担这种开销,不论您的脚本中是否真正使用了pcntl。 有一个调整是PHP 4.3.0之前的所有pcntl脚本要使其工作,要么在期望允许回调的(代码)部分使用 declare() ,要么使用declare()新的全局语法 使其在整个脚本范围有效。 注意: 此扩展在 Windows 平台上不可用。 |
pcre | 这些函数中使用的模式语法非常类似 perl。表达式必须用分隔符闭合,比如一个正斜杠(/)。 分隔符可以使任意非字母数字,除反斜杠()和空字节之外的非空白 ascii 字符。 如果分隔符 在表达式中使用,需要使用反斜线进行转义。自php 4.0.4开始,可以使用 perl 样式的()、 {}、 [] 以及 <> 作为分隔符。 更详细的解释参见模式语法。 结束分隔符后面可以紧跟模式修饰符来影响匹配效果。 参见模式修饰符。 PHP也支持使用 POSIX 扩展正则表达式函数 的 POSIX 扩展语法的正则表达式。 注意:这个扩展维护了一个已编译正则表达式的全局线程化缓存(最大4096)。 Warning 你应该知道一些 PCRE 的限制。阅读» http://www.pcre.org/pcre.txt 获取更详细信息。 PCRE 库是一个实现了与 perl 5 在语法和语义上略有差异(详见下文)的正则表达式模式匹配功能的函数集。 当前的实现对应于 perl 5.005。 |
pdo | PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。 注意利用 PDO 扩展自身并不能实现任何数据库功能;必须使用一个 具体数据库的 PDO 驱动 来访问数据库服务。 PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO 不提供 数据库 抽象层;它不会重写 SQL,也不会模拟缺失的特性。如果需要的话,应该使用一个成熟的抽象层。 从 PHP 5.1 开始附带了 PDO,在 PHP 5.0 中是作为一个 PECL 扩展使用。 PDO 需要PHP 5 核心的新 OO 特性,因此不能在较早版本的 PHP 上运行。 |
pgsql | PostgreSQL 函数库 |
phar | phar扩展提供了一种方法,可以将整个PHP应用程序放入名为“phar”(PHP归档)的单个文件中,以方便分发和安装。除了提供这个服务之外,phar扩展还提供了通过PharData类创建和操作tar和zip文件的文件格式抽象方法,就像PDO提供了访问不同数据库的统一接口一样。PDO不能在不同的数据库之间进行转换,而Phar也可以使用一行代码在tar、zip和Phar文件格式之间进行转换。有关示例,请参阅Phar::convertToExecutable()。 phar是什么?Phar归档的最佳特点是可以方便地将多个文件分组为单个文件。因此,phar归档提供了一种方法,可以将完整的PHP应用程序分发到单个文件中,并从该文件运行它,而不需要将其解压缩到磁盘。此外,phar归档文件可以由PHP像其他任何文件一样轻松地执行,无论是在命令行上还是在web服务器上。Phar有点像PHP应用程序的u盘。 |
readline | readline 扩展函数实现了访问 GNU Readline 库的接口. 这些函数提供了可编辑的命令行. 一个例子是在 Bash 中允许你使用箭头按键来插入字符或者翻看历史命令. 因为这个库的交互特性,这个功能在你写的 Web 程序中没多大用处, 但是当你写的脚本被用在命令行中时非常有用. 从PHP 7.1.0 开始,这个扩展在Windows上也可用。 注意 readline扩展并非线程安全的!因此,在任何真线程安全的SAPI(例如Apache的mod_winnt)中使用这个扩展是非常不推荐的! |
redis | PHP操作redis的扩展库 |
Reflection | PHP 5 具有完整的反射 API,添加了对类、接口、函数、方法和扩展进行反向工程的能力。 此外,反射 API 提供了方法来取出函数、类和方法中的文档注释。 请注意部分内部 API 丢失了反射扩展工作所需的代码。 例如,一个内置的 PHP 类可能丢失了反射属性的数据。这些少数的情况被认为是错误,不过, 正因为如此,它们应该被发现和修复。 |
session | 会话支持在 PHP 中是在并发访问时由一个方法来保存某些数据.从而使你能够构建更多的定制程序 从而提高你的 web 网站的吸引力. 一个访问者访问你的 web 网站将被分配一个唯一的 id, 就是所谓的会话 id. 这个 id 可以存储在用户端的一个 cookie 中,也可以通过 URL 进行传递. 会话支持允许你将请求中的数据保存在超全局数组$_SESSION中. 当一个访问者访问你的网站,PHP 将自动检查(如果 session.auto_start 被设置为 1)或者在你要求下检查(明确通过 session_start() 或者隐式通过 session_register()) 当前会话 id 是否是先前发送的请求创建. 如果是这种情况, 那么先前保存的环境将被重建. |
soap | SOAP扩展可用于编写SOAP服务器和客户机。它支持SOAP 1.1、SOAP 1.2和WSDL 1.1规范的子集。 |
sockets | Socket扩展是基于流行的BSD sockets,实现了和socket通讯功能的底层接口,它可以和客户端一样当做一个socket服务器。 想了解更通用的客户端socket接口,请看 stream_socket_client(), stream_socket_server(), fsockopen(), 和 pfsockopen()。 使用这些函数时请注意,虽然他们中有很多和C函数同名的,但声明却很可能不同。未避免混淆,请仔细阅读函数描述。 不熟悉socket编程的可以在Unix手册上找到很多有用的信息,网上也有很多C socket编程方面的教程,简单修改一下就可以应用于PHP socket编程。» Unix Socket FAQ是一个不错的入门。 |
SPL | PHP标准库,SPL是用于解决典型问题(standard problems)的一组接口与类的集合。 |
standard | |
swoole | Swoole是一个使用事件驱动、异步、非阻塞I/O模型的高性能网络框架。它可以用来开发高性能、可伸缩、并发的TCP、UDP、Unix套接字、HTTP、Websocket服务。要开始,请查看»Swoole文档。 Note: 此扩展在 Windows 平台上不可用。 |
tidy | Tidy是Tidy HTML clean and repair实用程序的绑定,该实用程序允许您不仅清理和操作HTML、XHTML和XML文档,还可以遍历文档树,包括使用面向对象构造包含嵌入式脚本语言(如PHP或ASP)的文档。 |
tokenizer | 记号赋予器函数为嵌入在Zend引擎中的PHP记号赋予器提供了一个接口。使用这些函数,您可以编写自己的PHP源代码分析或修改工具,而不必在词汇级处理语言规范。 |
xdebug | Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。Xdebug2018年的最新版本是Xdebug 2.7.0beta1,release日期2018-09-20,添加了对PHP7.2的支持。 |
xml | XML(可扩展标记语言,eXtensible Markup Language) 是一种在互联网上用于结构化文档交互的数据格式。 它是互联网协会(W3C)定义的一个标准。与 XML 及其相关技术的信息可访问 » http://www.w3.org/XML/。 此 PHP 扩展实现 支持 James Clark 使用 PHP 编写的 expat。 此工具包可解析(但不能验证) XML 文档。它支持 PHP 所提供的 3 种字符编码: US-ASCII, ISO-8859-1 和 UTF-8。 不支持 UTF-16。 此扩展可 创建 XML 解析器 并为不同的 XML 事件定义 处理程序(handler)。 每个 XML 解析器还存在少数可以调节的 参数。 |
yaf | The Yet Another Framework (Yaf) 扩展是一个用来开发web应用的php框架。 |
yaml | YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。 YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。 |
zip | 此扩展可以让你透明地读写ZIP压缩文档以及它们里面的文件。 |
zlib | 这个模块允许您透明地读写gzip (.gz)压缩文件,通过大多数文件系统函数的版本,这些函数可以使用gzip压缩的文件(也可以使用未压缩的文件,但不使用套接字)。 注意:Version 4.0.4为.gz文件引入了一个fopen包装器,因此如果在调用fopen()时在文件名或路径前面加上zlib:前缀,就可以使用一个特殊的zlib: URL透明地访问压缩文件,使用普通的f*()文件访问函数。该特性需要一个提供fopencookie()函数的C运行时库。到目前为止,GNU libc似乎是唯一提供该特性的库。在PHP 4.3.0中,zlib:被更改为compress。zlib://防止文件名中含有’:'字符的歧义。不再需要fopencookie()函数。更多信息可以在关于zlib://的部分中找到。 |